1. 程式人生 > 其它 >C# WinForm窗體之間傳值六種方法

C# WinForm窗體之間傳值六種方法

1、通過建構函式

特點:傳值是單向的(不可以互相傳值),實現簡單

實現程式碼如下:

在窗體Form2中

  1. int value1;
  2. string value2;
  3. public Form2 ( int value1 , string value2 )
  4. {
  5. InitializeComponent ( );
  6. this.value1 = value1;
  7. this.value2 = value2;
  8. }

在窗體Form1中這樣呼叫

  1. new Form2 ( 111 , "222" ).Show (); //這樣就把111,"222",這2個值傳送給了Form2

2、通過靜態變數

特點:傳值是雙向的,實現簡單

實現程式碼如下:

  1. 在一個app類中定義一個靜態成員value
  2. public class app
  3. {
  4. public static string value;
  5. }

在窗體Form1中這樣呼叫

  1. app.value = "f2"; //給靜態成員賦值
  2. new Form2 ( ).Show ( ); //顯示Form2
  3. 在窗體Form2中
  4. this.Text = app.value; //取回app.value的值
  5. app.value = "Form2"; //給app.value賦值,以便其他窗體呼叫

3、通過窗體的公有屬性值

特點:實現簡單

實現程式碼如下:

在窗體Form2中定義一個公有屬性Form2Value,獲取和設定textBox1的文字值

  1. public string Form2Value
  2. {
  3. get
  4. {
  5. return this.textBox1.Text;
  6. }
  7. set
  8. {
  9. this.textBox1.Text = value;
  10. }
  11. }

在窗體Form1中這樣呼叫

  1. Form2 f2 = new Form2 ( );
  2. f2.Form2Value = "Ok"; //給Form2的textBox1賦值Ok
  3. f2.ShowDialog ( );

4、通過窗體的公有屬性值和Owner屬性

特點:實現簡單,靈活

實現程式碼如下:

在窗體Form1中

  1. public int Form1Value = 1;
  2. Form2 f2 = new Form2 ( );
  3. f2.ShowDialog ( this ); //把Form1作為Form2的所有者傳遞給Form2

在窗體Form2中

  1. //Form2的所有者是Form1
  2. Form1 f1 = ( Form1 ) this.Owner;
  3. //取到Form1的值是1
  4. MessageBox.Show ( f1.Form1Value .ToString ( ) );
  5. //給Form1的Form1Value賦值222
  6. f1.Form1Value = 222;

5、通過窗體的公有屬性值和Application.OpenForms屬性

說明:Application.OpenForms屬性:獲取屬於應用程式的開啟窗體的集合。(此屬性在 .NET Framework2.0版中)

實現程式碼如下:

在窗體Form1中

  1. public int Form1Value = 1;
  2. Form2 f2 = new Form2 ( );
  3. f2.Show ( );

在窗體Form2中

  1. string formName = "Form1";
  2. Form fr = Application.OpenForms [ formName ];
  3. if ( fr != null )
  4. {
  5. Form1 f1 = ( Form1 ) fr;
  6. //取到Form1的值是1
  7. MessageBox.Show ( f1.Form1Value.ToString ( ) );
  8. //給Form1的Form1Value賦值222
  9. f1.Form1Value = 222;
  10. }

6、通過事件

實現程式碼如下:

在窗體Form2中定義公有屬性Form2Value,獲取和設定textBox1的文字值

並且還定義一個accept事件

  1. public string Form2Value
  2. {
  3. get
  4. {
  5. return this.textBox1.Text;
  6. }
  7. set
  8. {
  9. this.textBox1.Text = value;
  10. }
  11. }
  12. public event EventHandler accept;

 

  1. private void button1_Click ( object sender , EventArgs e )
  2. {
  3. if ( accept != null )
  4. {
  5. accept ( this , EventArgs.Empty ); //當窗體觸發事件,傳遞自身引用
  6. }
  7. }

在窗體Form1中

  1. Form2 f2 = new Form2 ( );
  2. f2.accept += new EventHandler ( f2_accept );
  3. f2.Show ( );
  4. void f2_accept ( object sender , EventArgs e )
  5. {
  6. //事件的接收者通過一個簡單的型別轉換得到Form2的引用
  7. Form2 f2 = (Form2) sender;
  8. //接收到Form2的textBox1.Text
  9. this.textBox1.Text = f2.Form2Value;
  10. }

————————————————
版權宣告:本文為CSDN博主「qq_38763437」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/qq_38763437/article/details/120716300