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.

主站蜘蛛池模板: 性欧美精品xxxx| 人妖无码第一页| 国产精品三级专区| 亚洲天堂久久| 亚洲成人一区二区| 午夜福利在线观看成人| 幺女国产一级毛片| 国产精品久久久久久久久久98| 熟女视频91| 无码专区国产精品一区| 中文字幕有乳无码| 欧美色综合久久| 欧美中文字幕在线播放| 狠狠久久综合伊人不卡| 国产精品私拍99pans大尺度| 国产精品三级av及在线观看| 中日韩欧亚无码视频| 国产不卡网| 亚洲中文在线视频| 91无码人妻精品一区| 97在线免费| 亚洲国语自产一区第二页| jizz亚洲高清在线观看| 自拍偷拍一区| 首页亚洲国产丝袜长腿综合| 日韩精品免费一线在线观看 | 免费在线一区| 精品中文字幕一区在线| 手机在线看片不卡中文字幕| 国产真实乱人视频| 天天色天天操综合网| 亚洲国产黄色| 国产美女主播一级成人毛片| 国产全黄a一级毛片| 久久亚洲美女精品国产精品| AV无码无在线观看免费| 国产成人1024精品| 91精品伊人久久大香线蕉| 午夜福利视频一区| 五月天综合网亚洲综合天堂网| 欧美亚洲第一页| 激情视频综合网| 亚洲综合极品香蕉久久网| 综合色婷婷| 亚洲一区二区三区麻豆| 亚洲第一在线播放| 亚洲h视频在线| 18禁黄无遮挡网站| 国产在线精品人成导航| 在线观看视频一区二区| 亚洲男人天堂久久| 国产麻豆精品手机在线观看| 日本午夜影院| 91精品在线视频观看| 91综合色区亚洲熟妇p| 日韩福利在线观看| 亚洲中文字幕97久久精品少妇| 国产va免费精品观看| 波多野结衣一区二区三区88| 亚洲成人一区二区三区| 午夜福利无码一区二区| 中文字幕第4页| 思思热精品在线8| 国产91色在线| h网址在线观看| 午夜欧美理论2019理论| 日韩免费成人| 蜜臀av性久久久久蜜臀aⅴ麻豆 | 人妻一区二区三区无码精品一区 | 欧美日韩在线观看一区二区三区| 精品久久综合1区2区3区激情| 色综合久久综合网| 日韩国产 在线| 国产亚洲精| 五月综合色婷婷| 欧美日本中文| 五月天久久婷婷| 日韩欧美国产另类| 9966国产精品视频| 久久国产av麻豆| 伊人色在线视频| 国内精品久久九九国产精品|