我的主窗体打开子窗体。当子窗体关闭时,父窗体需要执行一些任务。父母如何知道子窗体已关闭。
我有一个解决方法-隐藏按钮,当孩子引发关闭事件时,我调用PerformeClick方法。
有没有更好(更正确)的方法?
答案 0 :(得分:2)
实例化子窗体时,为您的主/父窗体添加一个侦听器事件。下面的示例:
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.CustomFormClosed += CloseListener;
f2.Show();
}
private void CloseListener(object sender, EventArgs e, string test)
{
Console.WriteLine(test);
}
针对自定义代表和事件进行了编辑
Form2代码:
public delegate void CustomFormClosedHandler(object semder, FormClosedEventArgs e, string text);
public event CustomFormClosedHandler CustomFormClosed;
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
CustomFormClosed(sender, e, "Hello World!");
}
答案 1 :(得分:1)
一种方法是:
从DialogResult
的{{1}}事件处理程序中返回FormClosing
Form2
在private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
this.DialogResult = DialogResult.OK;
}
的新线程上运行模式ShowDialog()
,然后等待Form1
DialogResult
答案 2 :(得分:0)
所有您需要做的:
1:以父级形式添加公共静态方法:
layout-components
2:在子窗体中添加一个(FormClosed)事件,该事件从父窗体中调用该方法:
table-components