999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于C#的Winform程序參數傳遞和同步顯示的實現

2010-04-12 00:00:00輝,常婉綸
現代電子技術 2010年14期

摘 要:程序設計中經常需要把參數從一個函數傳遞到另一個函數,或者獲取某個函數的返回值。基于Winform的程序經常需要把參數從一個窗體傳入到另一個窗體,或者某一窗體中內容變更時另一窗體相同內容隨之改變,利用C#提供的類、對象屬性、委托幾種機制,提出通過使用構造函數對對象進行初始化、變更對象屬性、借助委托等方法實現多個窗體間的參數傳遞和內容的同步更新顯示。在對各種方法應用對比的同時,重點發掘了委托機制為實現窗體間內容的傳遞和同步更新所帶來的優勢。

關鍵詞: 參數傳遞; 同步顯示; Winform程序; C Sharp

中圖分類號:TN98; TP311 文獻標識碼:A 文章編號:1004-373X(2010)14-0064-03

Realization of C#-based Winform Program Parameter Transmission and Synchronous Display

LIU Hui, CHANG Wan-lun

(Higher Institute of Technolog, Xi’an University of Technology, Xi’an 710082, China)

Abstract: The parameter transmission between forms and the synchronous update display realized with methods of the object initialization, variation of object properties and authorization implemented by constructing functions is put forward by the mechanisms of C#-provided classes, object properties and authorization. By comparisonwith various methods, the authorization mechanism is explored emphatically to realize the parameter transmission between forms and synchronous update.

Keywords: parameter transmission; synchronous display; Winform program; C Sharp

目前,微軟的.NET平臺已經成為主流的開發平臺,幾乎與Sun公司的Java語言并駕齊驅,而C#是.NET平臺的主流語言,且日益受到了程序員的喜愛。

在程序設計中,常需要把參數從一個函數傳遞到另一個函數中,這就是通常所說的函數調用過程中的參數傳遞,即用實參的值傳遞給形參的方式來傳遞信息。C#程序設計也不例外,同樣存在著值傳遞和引用傳遞兩種方法[1-3]。同時,在進行Winform程序設計時,當多個窗體間發生參數傳遞時,一個窗體中的值發生變更,其他窗體顯示的內容也應該同步更新。

1 Winform程序的值傳遞

值傳遞(call by value)中,函數將參數復制到子程序的參數中,改變子程序的參數不會影響用于調用的參數。如圖1所示。在C#的TestWindowsApplication 項目中存在著兩個窗體,現在需要在按“確定”按鈕后彈出窗體Form2,并把窗體Form1中TextBox控件tB中的內容單向傳遞到窗體Form2中的Label控件lB中,并顯示出來。這種C#中的Winform程序窗體間用于值傳遞的實現機制有以下幾種方法:

圖1 TestWindowsApplication項目的

兩個窗體Form1和Form2

1.1 借助于對象的構造函數接收參數

如下程序段中,在Form2中使用一個private變量,同時設置一個public的有參構造函數,通過該函數修改其中的私有變量termname。同時,在Form1中實例化對象時調用該有參構造函數,實現參數tB.Text的單向傳遞。

利用對象的構造函數接收參數程序示例:

namespace TestWindowsApplication

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void bt Click(object sender,EventArgs e)

{

Form2 frm = new Form2(tB.Text);

frm.ShowDialog();

}

}

}

namespace TestWindowsApplication

{

public partial class Form2 : Form

{

private string termname;

public Form2(string xx)

{

InitializeComponent();

termname = xx;

}

private void Form2 Load(object sender,EventArgs e)

{

lB.Text = termname;

}

}

}

1.2 使用屬性機制完成參數傳遞

如下所示程序段,在Form2中使用一個private變量,同時對該變量構造一個屬性,在屬性中對該私有變量進行讀/寫,因其屬性為public類型,則在Form1中可以直接通過TermName屬性完成對私有變量的設置。

利用屬性機制完成參數傳遞程序示例:

namespace TestWindowsApplication

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void bt Click(object sender,EventArgs e)

{

Form2 frm = new Form2();

frm.TermName = tB.Text;

frm.ShowDialog();

}

}

}

namespace TestWindowsApplication

{

public partial class Form2 : Form

{

private string termname;

public int TermName

{

get { return termname; }

set { termname = value; }

}

public Form2()

{

InitializeComponent();

}

private void Form2 Load(object sender,EventArgs e)

{

lB.Text = TermName;

}

}

}

1.3 直接設置控件的Modifers屬性

把Form2中label控件的Modifers屬性設置為public,則剩下的工作就是在Form1中填寫下列代碼即可:

Form2 frm = new Form2();

frm.lB.Text = x.ToString() ;

frm.ShowDialog();

2 Winform程序的引用傳遞

引用傳遞(call by reference)中,函數復制到子程序中的是參數的地址,用此方法獲取指向調用方數據的指針,此數據與調用方共享,如果方法對引用參數進行更改,則這些更改即是對調用方的數據進行的。這就是我們常說的參數的雙向傳遞[4-7]。在C#中,進行引用傳遞時需要在參數前加上關鍵字ref或out,如下程序段所示。但這種情況不適合Winform程序的事件編程。

class RefExample

{

static void Method(ref int i)

{

i = 44;

}

static void Main()

{

int val = 0;

Method(ref val);

// val is now 44

}

}

3 借助委托實現參數回傳后的同步顯示

如圖2所示,當在C#的TestWindowsApplication 項目的Form1中按下“增加新學期”按鈕后彈出窗體Form3,此時在Form3中可以改變年份和學期名,當按下“確定”按鈕后,要求Form1中的當前學期內容隨之改變(如圖3所示)。這時不僅要求把Form3中增加的新學期當作當前學期回傳到Form1中,同時還要求能夠馬上刷新Form1窗體,此時需要在Form1中使用C#提供的委托機制[8]實現參數回傳。

圖2 TestWindowsApplication項目的

兩個窗體Form1和Form3

委托機制的實現方法:

(1) 在充當子界面的Form3窗體中,首先定義委托和委托對象:

public delegate void ChangeTerm(); //定義一個委托

public ChangeTerm changeterm; //定義一個委托對象

然后,在適當的事件中執行委托操作即可。如可在“確定”按鈕的單擊事件下執行委托。

private void bt Click(object sender,EventArgs e)

{

this.changeterm();

}

圖3 TestWindowsApplication項目中按下窗體Form3

中的確定按鈕后窗體Form1的變化狀況

(2) 在充當主界面的Form1窗體中,首先需要定義一個方法,在該方法中獲取到Form3中選定的當前學期內容,然后在對應的TextBox控件tB中顯示。采用如下所示定義方法ShowTerm:

private void ShowTerm()

{

… //調用委托時所需要執行的語句

}

然后在按下“增加新學期”按鈕時,添加如下代碼即可。

Form3 frm=new Form3();

Frm.changeterm = new Form3.ChangeTerm(ShowTerm);

4 結 語

利用C#提供的幾種機制組合使用,可完美地實現在C#的Winform程序中根據需要把一個值從一個窗口傳入另一個窗口,并且在多個窗口中實現內容的同步更新。

參考文獻

[1]周峰.Visual C#.NET 2005中文版基礎與實踐教程[ M] .北京:電子工業出版社,2007.

[2]HOFFMAN K,KRUGER L.C#.NET技術內幕[M].董梁,高猛,譯.北京:清華大學出版社,2006.

[3]ANDERS Hejlsberg,SCOTT Wiltamuth,PETER Golde.C#編程語言詳解[M].韓江,王秀慧,譯.北京:電子工業出版社,2007.

[4]葉煜.C#語言中參數傳遞分析研究[J].科技創新導報,2008(28):14.

[5]戴志鋒,管建和.C#中屬性定義Value參數的值傳遞機制分析[J].電腦編程技巧與維護,2007(9):22-25.

[6]白雪冰.分析C#程序設計語言中參數的傳遞[J].電腦知識與技術,2007(15):749-750.

[7]劉志華.深入探討C++語言中參數傳遞問題[J].哈爾濱師范大學:自然科學學報,2007,23(4):63-65.

[8]張立.C# 2.0完全自學手冊[M].北京:機械工業出版社,2007.

主站蜘蛛池模板: 91麻豆国产视频| 丝袜亚洲综合| 久久天天躁狠狠躁夜夜2020一| 日韩人妻无码制服丝袜视频| 亚洲A∨无码精品午夜在线观看| 亚洲人人视频| 亚洲精品不卡午夜精品| 久久这里只有精品66| 欧美精品成人| 国产午夜不卡| 欧美日本视频在线观看| 欧美国产视频| AV网站中文| 中国毛片网| 欧美在线观看不卡| 国产极品美女在线观看| 久久这里只有精品国产99| 91po国产在线精品免费观看| 免费福利视频网站| 一级毛片高清| 欧美成人A视频| 亚洲人成网18禁| 欧美 亚洲 日韩 国产| 国产福利一区二区在线观看| 最近最新中文字幕免费的一页| 欧美日韩国产一级| 91探花在线观看国产最新| 天天做天天爱天天爽综合区| 色综合热无码热国产| 91网在线| 99热这里只有成人精品国产| 久草视频精品| 国产后式a一视频| 白丝美女办公室高潮喷水视频 | 色婷婷国产精品视频| 91蝌蚪视频在线观看| 日韩欧美成人高清在线观看| 亚洲国产日韩一区| 少妇精品在线| 久久一本日韩精品中文字幕屁孩| 久久国产精品麻豆系列| 国产成人免费| 精品久久综合1区2区3区激情| 色综合综合网| 欧美日韩福利| 亚洲欧洲国产成人综合不卡| 麻豆AV网站免费进入| 白浆视频在线观看| 亚洲乱强伦| 91麻豆精品视频| 中文国产成人精品久久| 97av视频在线观看| 国产成人夜色91| 97视频精品全国免费观看| 成人第一页| 中国特黄美女一级视频| 中日韩欧亚无码视频| 国产精品女人呻吟在线观看| 国产午夜福利片在线观看| 国产高清国内精品福利| 亚洲天堂网站在线| 国产XXXX做受性欧美88| 区国产精品搜索视频| 国产麻豆精品手机在线观看| 国产成人精品一区二区| 女人18毛片水真多国产| 成人亚洲视频| aaa国产一级毛片| av手机版在线播放| 五月天天天色| 欧美在线中文字幕| 久久无码av一区二区三区| 欧美亚洲一区二区三区导航| 日韩少妇激情一区二区| 超清无码一区二区三区| 成人韩免费网站| 制服丝袜无码每日更新| 亚洲自偷自拍另类小说| igao国产精品| 国产精品国产主播在线观看| 香蕉蕉亚亚洲aav综合| 欧美福利在线观看|