我现在有两个窗口,form1和form2,form2有一操作会打开form1,当form1的操作结束后会关闭form1。请问此时如何让form2再执行一次load事件中的代码。
我想到的另一种办法是当form2打开form1的时候把自己关闭掉。因为这个会比较麻烦。所以我还是觉得前面那种办法比较可行一些。。请问该怎么半啊

解决方案 »

  1.   

    lz你好,你说的如果“真实”的把Form1自己给关闭掉的话,那么Form2必然也被关闭掉的但是可以“假”关闭,就是使Form2打开时,Form1是隐藏就可以实现lz的意思了。隐藏:Hide()方法
      

  2.   

    From2 form=new Form2();
    if(form.showDialog()==DialogResult.OK)
    this.Onload(null);
    把FORM2里面button的属性改为OK就可以了
      

  3.   

    你可以将load中所调用的代码,写成一个方法 void  myload(){}然后你在load中可以调用myload,在操作后你直接调用myload
      

  4.   

    你可以将load中所调用的代码,写成一个方法 void myload(){}然后你在load中可以调用myload,在操作后你直接调用myload可以用事件关联。在form1 close()的时候定义一个事件,然后在form2 哪里关联。
      

  5.   

    form1 和 form2 哪一个是启动窗口 ?
    让form2再执行一次load事件中的代码,是在FORM1中执行 FORM2 的LOAD ,还是在FORM2中执行
    本窗口FORM2中的LOAD ?        private void button7_Click(object sender, EventArgs e)
            {            Form1_Load(sender, e);
            }
      

  6.   

    From2 form=new Form2();
    form.showDialog();
    private void button1_Click(object sender, EventArgs e)
      {
         From1 f = new form1();
         if(f .showDialog()==DialogResult.OK)
         {
             this.Onload(null);
         } 
      }
      

  7.   


    其实你可以在form1中定义事件委托,然后在form2中调用,我这里提供一点我的处理方法:
    我定义了一个CtlLoginUser登录用户维护自定义控件,这个控件我放在另一个窗体A中,当用户编辑登录用户信息时,刷新A窗体中的用户列表。    //CtlLoginUser自定义控件源部份代码:
        public partial class CtlLoginUser : UserControl
        {
            public delegate void OnFormChangeEventDelegate(object sender, EventArgs arg);
            public event OnFormChangeEventDelegate FormChangeEvent;
            protected void OnFormChangeEvent(EventArgs e)
            {
                if (this.FormChangeEvent != null)
                    this.FormChangeEvent(this,e);
            }
            public CtlLoginUser()
            {
                InitializeComponent();
            }
            private void btnSave_Click(object sender, EventArgs e)
            {//数据保存时
                if (验证成功)
                {
                    OnFormChangeEvent(e);
                }
            }
        }
    我在A窗体中的构造函数中初始化自定义控件的事伯,下面是当用户保存后刷新A窗口的部份代码:        public FrmLoginUserList()
            {
                InitializeComponent();
                this.ctlLoginUser.FormChangeEvent += new Control.CtlLoginUser.OnFormChangeEventDelegate(ctlLoginUser_FormChangeEvent);        }        void ctlLoginUser_FormChangeEvent(object sender, EventArgs arg)
            {
                this.LoadData();
                //也可以调用下面的load事件
                //this.FrmLoginUserList_Load(sender, arg);        }
    这样的话,当保存登录用户数据后,窗体的用户列表就会刷新。
      

  8.   

    要在form2窗体中注册form1中定义的事件哦。别搞忘这个了。完毕。
      

  9.   

    楼主这种操作,主窗体不能是from1和from2,如果有一个是,都不能用close,只能hide,否则程序直接关闭了。至于执行from2的fromlode代码,完全可以把fromlode内执行操作封装进函数,需要刷新的时候直接调用就可以了。
      

  10.   

    我终于搞好了。用的是将LOAD操作里的东西放进一个函数中的做法。其余的要多注意互相引用的值传递问题