我最近在做一个项目,主窗体设置为MDI,采用的DockPanel布局,现在遇到这样的问题:
我其中一个子窗体A的值会根据数据源的值即时更新,我利用SqlDependency实现的,然后在子窗体A弹出新的子窗体B也需要值的适时更新,利用Form的Owner属性也实现了同步更新,但我现在想要在子窗体B提交的时候,将值传到主窗体的另外一个子窗体C中,并即时更新,不知道该怎么做了,还是我SqlDenpendency应该写在主窗体里面,然后传递给其他子窗体,我现在实在不知道该怎么办了,请教下各位高手。

解决方案 »

  1.   

    http://topic.csdn.net/u/20091111/20/428adc4e-9b61-4202-9c3a-8b16c18fbf1d.html
    http://topic.csdn.net/u/20081014/18/41980444-ff5b-40ce-af54-27a8fa3449e7.html
      

  2.   

    其实你应该改变下思维方式...WinForm不是WebForm,所有资源都在一个进程中并能够永久保持,不存在同步问题...也就是说你的所有窗体——不管多少个也不管它们是什么关系——都可以共享一个数据源...至于更新时的消息通知用委托或事件来完成...
      

  3.   

    用事件或委托该怎么做,我在网上找了相关的传值,但是用过来都用不上,我想知道就是在不show一个窗体的时候,值是怎么在不同窗体间传递的
      

  4.   

    通过窗体的公有属性值和Application.OpenForms属性 
    说明:Application.OpenForms属性:获取属于应用程序的打开窗体的集合。(此属性在 .NET Framework2.0版中) 
    实现代码如下: 
    在窗体Form1中 
    public int Form1Value = 1; Form2 f2 = new Form2 ( ); 
    f2.Show ( ); 在窗体Form2中 
    string formName = "Form1"; 
    Form fr = Application.OpenForms [ formName ]; if ( fr != null ) 

    Form1 f1 = ( Form1 ) fr; 
    //取到Form1的值是1 
    MessageBox.Show ( f1.Form1Value.ToString ( ) ); 
    //给Form1的Form1Value赋值222 
    f1.Form1Value = 222; 

    通过这个方法解决了,谢谢大家!