用委托实现窗体间传值
- 新建一个工程.在Form1中添加一个Label和一个Button.新建一个事件类,让它有一个string 类型的属性,用于传值.
代码1 ///ReturnValueEventArgs.cs
2 using System;
3 using System.Collections.Generic;
4 using System.Text;
5
6 namespace test
7 {
8 public class ReturnValueEventArgs:EventArgs
9 {
10 private string str;
11
12 public string strMessage
13 {
14 get
15 {
16 return str;
17 }
18 set
19 {
20 str = value;
21 }
22 }
23 }
24 }
25 - 新建一个窗体Form2.添加一个TextBox和一个Button.添加如下代码.
代码1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Text;
7 using System.Windows.Forms;
8
9 namespace test
10 {
11 public partial class Form2 : Form
12 {
13 public event returnValueHandler returnValue;
14
15 public Form2()
16 {
17 InitializeComponent();
18 }
19
20 private void button1_Click(object sender, EventArgs e)
21 {
22 ReturnValueEventArgs ee = new ReturnValueEventArgs();
23 ee.strMessage = textBox1.Text;
24 returnValue(sender, ee);
25 }
26 }
27 } - 在Form1中添加如下代码.
1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Text;
7 using System.Windows.Forms;
8
9
10 namespace test
11 {
12 public delegate void returnValueHandler (object sender ,ReturnValueEventArgs e);
13 public partial class Form1 : Form
14 {
15
16 public Form1()
17 {
18 InitializeComponent();
19 }
20
21 private void button1_Click(object sender, EventArgs e)
22 {
23 Form2 frm = new Form2();
24 frm.Show();
25 frm.returnValue += new returnValueHandler(frm_returnValue);
26
27
28 }
29
30 void frm_returnValue(object sender, ReturnValueEventArgs e)
31 {
32
33 label1.Text = e.strMessage;
34 //throw new Exception("The method or operation is not implemented.");
35 }
36 }
37 }
这样就可以实现窗体之间通过委托传值.