子窗口中单击一个按钮,改变了数据,现在要实现它的父窗口上的数据做相应的变化。。应该是子窗口单击按钮的时候生成一个事件,父窗口注册这个事件,子窗口激活这个事件,但是不知道怎么实现。。能不能给提示!网上找到说用观察着模式,但是不会用啊

解决方案 »

  1.   

    1.子窗体添加自定义事件,事件参数可以使你需要专递到父窗体的信息2.例如子窗体按钮点击事件中发生该事件3.父窗体New子窗体时,声明子窗体自定义事件,然后父窗体添加事件响应函数,该函数中获取子窗体传过来的信息
      

  2.   

    对于需要在子窗体中调用父窗体方法的解决方案有两种。简单的一种就是在初始化子窗体的时候传入参数,参数类型为form类型。然后初始化一个父窗体实例并将传入参数赋给该实例。如下代码: //设置为全局变量parentform parentform=new parentform();public Frm1(parentform parent)        {            InitializeComponent();           parentform=parent;        }
    另一种方法就是使用委托来实现。首先在子窗体中定义一个委托,然后在父窗体初始化子窗体时将子窗体希望调用的父窗体方法绑定在子窗体上。就可以了。代码如下: //父窗体form1 子窗体form2//父窗体方法 send();//子窗体方法定义委托public delegate void rshowgysmb();//定义委托public  rshowgysmb showgys;//定义委托实现类//调用父窗体中的方法private void useparent(){  if(showgys!=null){showgys();}}//父窗体中的方法:显示子窗体private void showchildform(){   form2 f=new form2();  f.showgys+=new form2.rshowgysmb(send);f.showdialog();}这是我整理的。你看看是不是你要的
      

  3.   


    这个第一种方法中,parentform parentform=new parentform();这句话是放在子窗口中声明的吧。如果子窗口是带有参数的,是不是不能用这种方式来实现了
      

  4.   

    主窗体定义 
    private static MainForm mainForm; 
    public static MDIForm 

        get 
          { 
            return mainForm; 
          } 
    } public MainFrom() 

                InitializeComponent(); 
                mainForm= this; 
    } 子窗体调用 MainForm.MDIForm.方法
      

  5.   

    http://blog.csdn.net/xiaoxiang_feizi/archive/2010/12/08/6062453.aspx
      

  6.   

    我觉得你可以把你父窗体上面的显示数据的控件设为公有的,在子窗体中可以生成父窗体的对象,来访问父窗体上的控件,对父窗体上的控件进行操作。
    1.父窗体的Designer.cs文件中(以Lable为例)
       public System.Windows.Forms.Label label1;
    2。在子窗体中生成对象
        父窗体名称  f=new 父窗体名称();
        f.Lable1.Text="你好";
       
      
      

  7.   

    在父窗体声明事件,子窗体中Using 父窗体,然后触发事件就可以了,我的就是这样的