Winform中如何实现子窗体刷新父窗体
原理:利用委托和事件,本文将以图文并茂的例子讲述,告诉我们So Easy
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一.窗体展示
首先我们看到是一个父窗体,我们可以看到左边是一个[树控件],我们将点击[添加大类]和[添加字典]时调出子窗体
接下来是子窗体展示,当我们点击取消或者关闭按钮时,我们需要看到我们添加或者修改的数据能展示出来,这就是我们要做的事
.
二.代码展示
首先是子窗体中的代码,我们需要定义一个委托和事件
1 2 3 4 5 |
//定义委托 public delegate void Refresh();
//定义事件 public event Refresh myRefresh; |
其次是父窗体的代码,我们需要定义一个刷新的方法
1 2 3 4 5 6 7 8 9 10 |
/// <summary> /// 刷新控件信息 /// </summary> /// <author>PengZhen</author> /// <time>2013-10-25 14:46:21</time> private void RefreshControl() { //绑定树信息 BindTree(); } |
当上面两步完成之后,我们就要就行调用,进行刷新操作了
首先是父窗体中的代码,当我们点击[添加大类]或者[添加字典]时在相应的按钮事件中添加如下代码
1 2 3 4 5 6 7 8 |
//子窗体
ChildForm objCF= new ChildForm();
//定阅这个事件 objCF.myRefresh += new ChildForm.Refresh(RefreshControl); //展示子窗体 objCF.ShowDialog(); |
其次是子窗体的代码,当我们点击[取消]或者[关闭窗体]时在相应的按钮事件中添加如下代码
取消:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/// <summary> /// 取消 /// </summary> /// <author>PengZhen</author> /// <time>2013-10-23 15:15:57</time> /// <param name="sender"></param> /// <param name="e"></param> private void btCancel_Click(object sender, EventArgs e) {
this.Close();
//关闭的时候执行事件 myRefresh(); } |
关闭事件
1 2 3 4 5 6 7 8 9 10 11 12 |
/// <summary> /// 用户点击关闭窗体后执行操作 /// </summary> /// <author>PengZhen</author> /// <time>2013-10-25 15:00:45</time> /// <param name="sender"></param> /// <param name="e"></param> private void DataDictionaryInfoFrm_FormClosed(object sender, FormClosedEventArgs e) { //关闭的时候执行事件 myRefresh(); } |
OK,写到这基本都完成了,有木有发现非常简单呢