三层的学习笔记-----利用EventHandler进行窗体间的对象传值

主窗体:

 1  public PersonOne()
 2         {
 3             InitializeComponent();
 4         }
 5         //第一步:定义一个eventHandler事件
 6         public event EventHandler evtPerson;
 7         private void button1_Click(object sender, EventArgs e)
 8         {
 9             Person p = new Person();
10             try
11             {
12                 //将文本框中的内容存到Person对象中
13                
14                 p.Name = txtName.Text;
15                 p.Age = Convert.ToInt32(txtAge.Text);
16                 p.Gender = cmbGender.Text;
17 
18             }
19             catch (Exception)
20             {
21 
22                 MessageBox.Show("输入有误");
23             }
24            
25            //第三步:new一个窗体2的对象用来调用窗体2中的方法,并且绑定事件
26             frmShowPerson fsp=new frmShowPerson();
27             evtPerson += fsp.SetPerson;
28             //第四步:判断事件是否为空
29             if (evtPerson!=null)
30             {
31                 //第五步:创建一个要传递的参数类,将要传递的参数存储在事件的属性中
32                 frmEventArgs fea = new frmEventArgs();
33                 fea.obj = p;
34                 //第六步:调用事件
35                 evtPerson(this, fea);
36                 //为窗体2关闭的时候注册一个清空窗体1内容的事件
37                 fsp.FormClosed += fsp_FormClosed;
38 
39                 fsp.ShowDialog();
40             }
41            
42 
43         }
44 
45         void fsp_FormClosed(object sender, FormClosedEventArgs e)
46         {
47             this.txtAge.Clear();
48             this.txtName.Clear();
49         }
50 
51         private void PersonOne_Load(object sender, EventArgs e)
52         {
53             cmbGender.Text = "请选择";
54         }
55     }

子窗体:

 1  public partial class frmShowPerson : Form
 2     {
 3         public frmShowPerson()
 4         {
 5             InitializeComponent();
 6         }
 7         //第二步:在窗体2中创建一个参数和返回值和eventHangdler一样的方法
 8         public void SetPerson(object obj, EventArgs e)
 9         {
10             //第七步:将传过来的object转成未传递之前的对象进行调用
11             frmEventArgs fea = e as frmEventArgs;
12             Person p2 = fea.obj as Person;
13             txtName.Text = p2.Name;
14             txtAge.Text = p2.Age.ToString();
15             txtGender.Text = p2.Gender.ToString();
16 
17         }
18     }

类窗体:

1  public  class frmEventArgs:EventArgs
2     {
3        /// <summary>
4        /// 要传递的对象
5        /// </summary>
6        public object obj { get; set; }
7     }
 1  public class Person
 2     {
 3         private string _name;
 4 
 5         public string Name
 6         {
 7             get { return _name; }
 8             set { _name = value; }
 9         }
10        private int _age;
11 
12        public int Age
13        {
14            get { return _age; }
15            set { _age = value; }
16        }
17        private string _gender;
18 
19        public string Gender
20        {
21            get { return _gender; }
22            set { _gender = value; }
23        }

 

posted on 2016-01-19 15:16  努力的活着_在人间  阅读(487)  评论(0)    收藏  举报

导航