如何用委托实现登陆窗口后将一些值传递给主窗口

代码
 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     }

 

posted @ 2010-04-15 23:19  我还是不懂  阅读(246)  评论(0编辑  收藏  举报