主窗体有个 datagridview ,子窗体给主窗体添加或者修改了数据;怎么刷新主窗体?

解决方案 »

  1.   

    子窗体加个回调函数的属性或事件在主窗体中设置对应的方法,就可以了例如:
    子窗体public delegate void Open();
    class B
    {
      public Open AOpen;  public B()
     {
      this.button.Click+=new EventHandler(button_click)
     }  private void button_click(object sender,EventArg e)
    {
    if(AOpen!=null)AOpen();
    }
    }主public class A
    {public A()
    {
     B obj=New B();
    obj.AOpen=new Open(change);
    }private void change()
    {}
    }
      

  2.   

    自定义消息,子窗体完成后,给主窗体的WndProc发送自定义消息即可
      

  3.   


        //定义委托
        public delegate void myDel();子窗体    //定义事件
        public event myDel myEvent;
        ......
        //引发事件
        myEvent();主窗体        private void button1_Click(object sender, EventArgs e)
            {
                Form2 f2 = new Form2();
                //订阅事件
                f2.myEvent += new myDel(f2_myEvent);
                f2.ShowDialog();
            }
            //处理事件
            void f2_myEvent()
            {
                //加载数据
                DataLoad();
            }
      

  4.   

    引用 3 楼 dancingbit 的回复:
    在父窗体的定义中加一个public static Form1 f=null; 
    构造函数中加一个f=this; 
    在子窗体中就可以通过Form1.f来引用父窗体了。 这个可以用!我试过了,刚好也遇到这个问题。还有高手lifengit说的方法,我没测试,不知道可不可行:父窗体 
    FrmXiangQing XQ = new FrmXiangQing(); 
    XQ.Owner = this; 子窗体中 
    this.Owner="";