如题, 我子窗体是用SHOW()的方法调出来的.我想在它关闭的时候调用父窗体的一些方法.如告诉父窗体他关闭了.
请问怎么设计啊? 谢谢

解决方案 »

  1.   

    form1
    定义一个公共变量
    例子:public textbox txt;      
         txt=textbox1;form2
    定义一个私有变量
    private form1 fm=null;写个form1的构造函数
    public form1 myform
    {
      set{fm=value;}
    }在form2构造函数中加入
    public form2 form2(form1 mf)
    {
       .......;
       fm=mf;
    }from2关闭事件添加
    if(fm!=null)
    {
      fm.txt.text="111222333";
      this.close();
    }
      

  2.   

    可以啊 fm.ChangeTitle("新标题");
      

  3.   

    不是子窗体有事件么?
    在父窗体中用子窗体的关闭事件就可以了啊。
            private void button1_Click_1(object sender, EventArgs e)
            {
                Form1 frm = new Form1();
                frm.Closed += new EventHandler(frm_Closed);
                frm.Show();
            }        void frm_Closed(object sender, EventArgs e)
            {
                //调用到这的话表示Form1已经关闭了
            }
      

  4.   

    哦.我知道了.正是想要lake_Cx的这个方法.谢谢.
      

  5.   

    再问一个问题,就是根据上面的方法是可以调用主窗体的方法了(在新窗体关闭时,) 但是如果主窗体的方法需要参数怎么办? 如何在frm.Closed += new EventHandler(frm_Closed)里面的frm_Closed加带个参数过去? 好象加拉参数编译不通过啊
      

  6.   

    主窗口的 frm_Closed(object sender, EventArgs e)方法被调用时,相关的参数都在e中取得。不知楼主把参数加在哪里了?
      

  7.   

    我的子窗体有个编号的.例如 FORM[] F = new FORM2[10];F[1],F[2],F[3],F[4].他们相对应的编号是1,2,3,4  当我关闭3号子窗体时, 我的主窗提怎么知道我关闭拉3号? 请问--frm_Closed(object   sender,   EventArgs   e)方法被调用时,相关的参数都在e中取得。
    这个e中,怎么获得窗提编号? 
      

  8.   

    使用全局变量是很不好的设计.
    如果想使用子窗口的什么数据的话,可以把sender参数as成子窗口类型, 就能使用子窗口的数据了.
    public class ParentForm : Form
    {
        private void MyFunction()
        {
            ChildForm child = new ChildForm();
            child.Closed += new EventHandler(child_Closed);
            child.Show();
        }    private void child_Closed(object sender, EventArgs e)
        {
            ChildForm a = sender as ChildForm;
            MessageBox.Show(a.MyAttribute);   // 这里就可以使用子窗口对象的数据了
        }
    }public class ChildForm : Form
    {
        public String MyAttribute
        {
            get
            {
                return "ChildForm ";
            }
        }
    }
      

  9.   

    在父窗体的unload事件中这样写
    this.Close();
    this.DialogResult == DialogResult.OK;
    子窗体中这样写
    Form 父窗体=new Form()
    if(父窗体.DialogResult == DialogResult.OK)
    {
        执行事件
    }
      

  10.   

    基于13楼的方法, 想要在关闭时知道是哪个窗口被关闭, 我能想到的有两种方法.
    1. 给每个子窗口增加一个ID属性, 关闭时判断这个属性即可.
    2. 拿到sender这个对象,和你的Form数组的所有元素比较, 哪个相等即是哪个.