开发一个窗口,设为MdiForm打开form1,form1中有一个combox,绑定了一个数据表tb
打开form2,form2中有一个datagrid,绑定一个数据表tb
.......现在打开form3,form3执行添加数据到tb问题:当form3执行添加成功时,form1\form2中如何实现同步更新就像打开几个相同目录的windows文件夹,只要在其中一个目录里新建一个文件,在其他目录中就可以看到了,怎么做?大家给下建议

解决方案 »

  1.   

    不知道可不可行。添加一个类。
    数据都放在这个类里。
    public class MyClass
    {
       public static DataSet ds; //一定要静态的。
    ...
    }
    三个子Form都绑定到这个类的静态成员ds;
      

  2.   

    form3添加数据并提交后发送消息, 其他的form1/2 响应处理该消息即可
    例如:
      AddData,
        DeleteData,
        UpdataData,
        ...
        ...你需要对消息进行统一的管理
      

  3.   

    对啊,楼上说的对啊!
    自定义一个事件,添加成功则触发。
    然后在另外两个窗体里响应事件刷新就ok了!如果采用模式对话框效果会好些!!博览中国,一切为了推广您的博客!
    http://www.bolancn.com
      

  4.   

    用delegate 參見:
    http://blog.csdn.net/tjvictor/archive/2006/06/23/824617.aspx
    中的第四個方法。
      

  5.   

    做成事件,在form3执行成功时触发
      

  6.   

    是的,采用delegate来实现观察者模式,来提供消息通知机制,更新相应的观察者,即那些form1、form2中的combox和datagrid
      

  7.   

    如果楼主不只是一个客户端,楼上的所有说法都不管用,只能用UDP广播的方式来做,一进主界面就打开一个线程,里面加一个UDP监听,这时别的机器上有变化马上发送消息过来,本机收到后就刷新窗口
    要注意的是不能在那个线程开的监听里刷新主线程中的窗口,这样会报错,我吃过这方面的亏了:)
      

  8.   

    to whmjw:
    你所说的“不能在那个线程开的监听里刷新主线程中的窗口”。那要怎么刷新主线程中的窗口呢?
      

  9.   

    呵呵,是网络编程吗?博览中国
    http://www.bolancn.com