在表单关闭时执行某些操作
本文关键字:操作 执行 表单 | 更新日期: 2023-09-27 18:37:26
如何检查表单是否已关闭?
我想在关闭另一个窗体时重新加载列表视图的项目。
我正在做的是:
Form1 = 具有列表视图
的表单Form2 = 带有文本框的表单
- 打开一个新表单。
- 通过文本框创建新文件夹。
- 当我在 Form2 中按"添加"时,我想在 Form1 上重新加载"列表视图"。
那么我应该怎么做呢?
对不起,我的英语:(不好。
最简单的
答案是在 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!
}
表格 1:
private void ShowForm2()
{
Form2 form2 = new Form2();
form2.ParentForm = this;
form2.Show();
}
public void RefreshList()
{
// do your refresh here
}
最初你提到你想在 Form2 关闭时执行此操作,但后来你提到你想这样做"当我在 Form2 中按"添加"时,我想重新加载 Form1 上的"ListView"。 正如其他人所提到的,您可以使用Closed
事件,因此我采用这种方法来解决您的第二种情况。
在 Form1 中,您可以订阅 From2 的 FormClosed 事件。
您可以处理关闭事件表单,因为如果您使用点网 1.1 以上的任何内容,关闭事件已经过时
如果您只想对特定窗体关闭时做出反应,则可以处理FormClosed
事件。 如果您想更进一步,还可以处理一个FormClosing
事件,甚至在需要时阻止表单关闭。
让 Form1 将事件处理程序添加到 Form2 的 FormClosing
事件是一个很好的选择。 但是,如果 Form2 是一个对话框窗口,则还有一个更简单的解决方案。 换句话说,如果在显示 Form2 时可以有效地锁定和禁用 Form1,则只需将 Form2 显示为对话框窗口即可。 对话框窗口同步显示,因此您只需在显示 Form2 后立即更新列表,直到关闭 Form2 后,它才会命中该列表更新代码。 例如:
form2.ShowDialog(this);
updateList();