如何检查表单是否已关闭?
当我关闭另一个表单时,我想重新加载列表视图的项目。
我正在做的是:
Form1 = 带有 ListView
的表单 Form2 = 带有 TextBoxes的表单
- 打开一个新表格。
- 通过文本框创建一个新文件夹。
- 当我在 Form2 中按“添加”时,我想在 Form1 上重新加载“ListView”。
那么我该怎么做呢?
对不起我的英语不好:(。
如果您使用高于 dot net 1.1 的任何内容,您可以处理表单关闭事件,因为关闭事件已过时
在 Form1 中,您可以订阅 From2 的FormClosed事件。
最简单的答案是在 Form1 上创建一个公共方法,让我们调用它RefreshList()
,在 Form2 上的按钮单击事件中,您只需调用Form1.RefreshList
. 这是一个快速示例:
表格 2:
public Form1 ParentForm { get; set; }
private void Button_Click(object Sender, EventArgs args) {
{
// After the rest of your handler
if(ParentForm != null)
ParentForm.RefreshList();
Close(); // Close Form2 here, we're done!
}
表格一:
private void ShowForm2()
{
Form2 form2 = new Form2();
form2.ParentForm = this;
form2.Show();
}
public void RefreshList()
{
// do your refresh here
}
最初您提到要在 Form2 关闭时执行此操作,但后来您提到您要执行此操作“当我在 Form2 中按“添加”时,我想在 Form1 上重新加载“ListView”。” 正如其他人提到的,您可以使用该Closed
事件,因此我采用这种方法来解决您的第二种情况。
FormClosed
如果您只是想在关闭特定表单时做出反应,您可以处理该事件。如果您想更进一步,FormClosing
您还可以处理一个事件,甚至在需要时阻止表单关闭。
让 Form1 为 Form2 的FormClosing
事件添加一个事件处理程序是一个很好的选择。但是,如果 Form2 是一个对话窗口,还有一个更简单的解决方案。换句话说,如果在显示 Form2 时有效锁定和禁用 Form1 是可以的,您可以简单地将 Form2 显示为对话框窗口。对话框窗口同步显示,因此您可以在显示 Form2 后立即更新列表,并且在 Form2 关闭之前它不会点击该列表更新代码。例如:
form2.ShowDialog(this);
updateList();