C# WinForm窗體之間傳值六種方法
阿新 • • 發佈:2022-04-12
1、通過建構函式
特點:傳值是單向的(不可以互相傳值),實現簡單
實現程式碼如下:
在窗體Form2中
- int value1;
- string value2;
- public Form2 ( int value1 , string value2 )
- {
- InitializeComponent ( );
- this.value1 = value1;
- this.value2 = value2;
- }
在窗體Form1中這樣呼叫
- new Form2 ( 111 , "222" ).Show (); //這樣就把111,"222",這2個值傳送給了Form2
2、通過靜態變數
特點:傳值是雙向的,實現簡單
實現程式碼如下:
- 在一個app類中定義一個靜態成員value
- public class app
- {
- public static string value;
- }
在窗體Form1中這樣呼叫
- app.value = "f2"; //給靜態成員賦值
- new Form2 ( ).Show ( ); //顯示Form2
- 在窗體Form2中
- this.Text = app.value; //取回app.value的值
- app.value = "Form2"; //給app.value賦值,以便其他窗體呼叫
3、通過窗體的公有屬性值
特點:實現簡單
實現程式碼如下:
在窗體Form2中定義一個公有屬性Form2Value,獲取和設定textBox1的文字值
- public string Form2Value
- {
- get
- {
- return this.textBox1.Text;
- }
- set
- {
- this.textBox1.Text = value;
- }
- }
在窗體Form1中這樣呼叫
- Form2 f2 = new Form2 ( );
- f2.Form2Value = "Ok"; //給Form2的textBox1賦值Ok
- f2.ShowDialog ( );
4、通過窗體的公有屬性值和Owner屬性
特點:實現簡單,靈活
實現程式碼如下:
在窗體Form1中
- public int Form1Value = 1;
- Form2 f2 = new Form2 ( );
- f2.ShowDialog ( this ); //把Form1作為Form2的所有者傳遞給Form2
在窗體Form2中
- //Form2的所有者是Form1
- Form1 f1 = ( Form1 ) this.Owner;
- //取到Form1的值是1
- MessageBox.Show ( f1.Form1Value .ToString ( ) );
- //給Form1的Form1Value賦值222
- f1.Form1Value = 222;
5、通過窗體的公有屬性值和Application.OpenForms屬性
說明:Application.OpenForms屬性:獲取屬於應用程式的開啟窗體的集合。(此屬性在 .NET Framework2.0版中)
實現程式碼如下:
在窗體Form1中
- public int Form1Value = 1;
- Form2 f2 = new Form2 ( );
- f2.Show ( );
在窗體Form2中
- string formName = "Form1";
- Form fr = Application.OpenForms [ formName ];
- if ( fr != null )
- {
- Form1 f1 = ( Form1 ) fr;
- //取到Form1的值是1
- MessageBox.Show ( f1.Form1Value.ToString ( ) );
- //給Form1的Form1Value賦值222
- f1.Form1Value = 222;
- }
6、通過事件
實現程式碼如下:
在窗體Form2中定義公有屬性Form2Value,獲取和設定textBox1的文字值
並且還定義一個accept事件
- public string Form2Value
- {
- get
- {
- return this.textBox1.Text;
- }
- set
- {
- this.textBox1.Text = value;
- }
- }
- public event EventHandler accept;
- private void button1_Click ( object sender , EventArgs e )
- {
- if ( accept != null )
- {
- accept ( this , EventArgs.Empty ); //當窗體觸發事件,傳遞自身引用
- }
- }
在窗體Form1中
- Form2 f2 = new Form2 ( );
- f2.accept += new EventHandler ( f2_accept );
- f2.Show ( );
- void f2_accept ( object sender , EventArgs e )
- {
- //事件的接收者通過一個簡單的型別轉換得到Form2的引用
- Form2 f2 = (Form2) sender;
- //接收到Form2的textBox1.Text
- this.textBox1.Text = f2.Form2Value;
- }
————————————————
版權宣告:本文為CSDN博主「qq_38763437」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/qq_38763437/article/details/120716300