在使用C#做winform的时候,你肯定遇到过这样的问题:
在A窗口中弹出B窗口,然后在B窗口弹出C窗口,当我们在C窗口修改了内容,要在A窗口刷新出来,怎办?是不是要A委托B,B又委托C呢?如果还有D,E,F,你不是要立马崩溃了?
有无办法,直接让C去刷新A的内容呢?
有,肯定有的。有些方案是做了专门的全局消息派送接口。
这里介绍一种不用第三方接口,直接用静态委托实现。
实现过程:
1、先定义一个静态的委托类,然后我们声明一个静态的event Action和调用这个Action的静态方法。
public static class GlobalAction
{
public static event Action acFangAnUpdateList;
public static void GoAcFangAnEvent()
{
if (acFangAnUpdateList == null)
{
return;
}
acFangAnUpdateList();
}
}
2、在A窗口绑定更新方法给它。
GlobalAction.acFangAnUpdateList += UpdateFangAnList;
public void UpdateFangAnList()
{
btnChaxun_Click(null, null);
}
3、在C窗口中使用。
GlobalAction.GoAcFangAnEvent();
4、当B窗口关闭的时候,记得在A窗口中解除绑定的方法。
GlobalAction.acFangAnUpdateList -= UpdateFangAnList;
完美解决问题。只加多了1个静态类而已,不用实现任何接口。