如何用委托实现登陆窗口后将一些值传递给主窗口
代码
1 public partial class frm_Login : Form
2 {
3 public class TitleChangedEventArgs : EventArgs //事件参数类
4 {
5 private string title = "";
6 public string Title
7 {
8 get
9 {
10 return title;
11 }
12 set
13 {
14 title = value;
15 }
16 }
17 }
18 public delegate void TitleChangedEventHandler(object sender, TitleChangedEventArgs e);
19 public event TitleChangedEventHandler TitleChanged;
20 public frm_Login()
21 {
22 InitializeComponent();
23 }
24
25 //该方法为登录按钮事件
26 private void btn_Ok_Click(object sender, EventArgs e)
27 {
28 TitleChangedEventArgs e1=new TitleChangedEventArgs();
29 e1.Title="Login sucessed";
30 OnTitleChanged(e1); //触发事件
31 this.Close();
32 }
33
34 protected virtual void OnTitleChanged(TitleChangedEventArgs e)
35 {
36 if (TitleChanged != null)
37 TitleChanged(this, e);
38 }
39 }
40
41 主窗体中订阅这个事件就可以了:
42 public partial class frm_Main : Form
43 {
44 private frm_Login loginForm = new frm_Login();
45 public Form1()
46 {
47 InitializeComponent();
48 loginForm.TitleChanged += new frm_Login.TitleChangedEventHandler(FormTitleChanged);
49 }
50
51 protected void FormTitleChanged(object sender, frm_Login.TitleChangedEventArgs e)
52 {
53 this.Text = e.Title;
54 }
55
56 private void button1_Click(object sender, EventArgs e)
57 {
58 loginForm.Show();
59 }
60 }
2 {
3 public class TitleChangedEventArgs : EventArgs //事件参数类
4 {
5 private string title = "";
6 public string Title
7 {
8 get
9 {
10 return title;
11 }
12 set
13 {
14 title = value;
15 }
16 }
17 }
18 public delegate void TitleChangedEventHandler(object sender, TitleChangedEventArgs e);
19 public event TitleChangedEventHandler TitleChanged;
20 public frm_Login()
21 {
22 InitializeComponent();
23 }
24
25 //该方法为登录按钮事件
26 private void btn_Ok_Click(object sender, EventArgs e)
27 {
28 TitleChangedEventArgs e1=new TitleChangedEventArgs();
29 e1.Title="Login sucessed";
30 OnTitleChanged(e1); //触发事件
31 this.Close();
32 }
33
34 protected virtual void OnTitleChanged(TitleChangedEventArgs e)
35 {
36 if (TitleChanged != null)
37 TitleChanged(this, e);
38 }
39 }
40
41 主窗体中订阅这个事件就可以了:
42 public partial class frm_Main : Form
43 {
44 private frm_Login loginForm = new frm_Login();
45 public Form1()
46 {
47 InitializeComponent();
48 loginForm.TitleChanged += new frm_Login.TitleChangedEventHandler(FormTitleChanged);
49 }
50
51 protected void FormTitleChanged(object sender, frm_Login.TitleChangedEventArgs e)
52 {
53 this.Text = e.Title;
54 }
55
56 private void button1_Click(object sender, EventArgs e)
57 {
58 loginForm.Show();
59 }
60 }