本文主要是描述通过子窗口的Click,Loaded,Cloesd等来实现父窗口的一些方法事件,可以用来改变父窗口的控件状态,数值等
子窗口:
public delegate void ChangeHandler(); //首先在子窗口定义委托
注意,此委托定义在nameSpace下,不要定义在Class内,只有定义在nameSpace下的委托才会父窗口被找到
然后在子窗口下定义委托事件:
public event ChangeHandler ChangeEvent;//此事件定义在Class内
定义一个方法执行委托事件:
private void ChageEvent() { if (ChageEvent!= null)ChageEvent(); }
然后在一个触发事件中调用这个方法(按钮事件,loaded事件等)
private void Window_Closed(object sender, EventArgs e) {ChageEvent(); };
然后在父窗口中:
在构造函数中,实例化子窗口:
SonWindow sonWindow = new SonWindow(); sonWindow.ChangeEvent += new ChangeHandler(FunA); //把你需要的方法添加到委托事件中 void FunA() { //写你想调用的方法,如重新绑定数据源啊 改变某标签的值啊 等等 }
思路就是定义一个委托,在子窗口中实例化这个委托事件,用子窗口你需要的触发方式去调用这个委托事件;
在父窗口中,提前将这个委托事件绑定好对应的方法即可
本文写的是无参的委托,需要有参的可以参考一下稍微改一下就行。