日期:2014-05-18  浏览次数:20826 次

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

------解决方案--------------------
不是子窗体有事件么?
在父窗体中用子窗体的关闭事件就可以了啊。
C# code
        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已经关闭了
        }

------解决方案--------------------
使用全局变量是很不好的设计.
如果想使用子窗口的什么数据的话,可以把sender参数as成子窗口类型, 就能使用子窗口的数据了.
C# code


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 ";
        }
    }
}