模式窗口打开后获取数据,然后关闭,给主窗口传数据,主窗口执行传进来的数据。
现在的问题是,想让模式窗口给主窗体传完一条数据后,主窗体执行完后(模式窗体不关闭),再让这个模式窗体给主窗体继续传数据,能做到吗?

解决方案 »

  1.   

    模态窗口通常是服务,而主窗口是客户。所以模态窗口需要定义多个事件,例如public event Action 开关打开了;
    public event Action 开始查询;
    public event Action<DataType> 增加了一行明细;
    public event Action<DataType> 删除了一条明细;等等。主窗体捕获自己关心的事件,在事件发生时从模态窗口读取数据刷新自己。要注意,主窗体依赖于模态窗口,而模态窗口不依赖于主窗口。可能有的人只会抄 xxxx.ShowDialog 那一条阻塞语句。这里的设计模式就根本不是这个语句,调用这个方法之后就不用管它了。真正的关键在于 ShowDialog 语句之前主窗口要注册自己要监听的事件,写上必要的事件回调委托代码。