在表单关闭时执行某些操作

本文关键字:操作 执行 表单 | 更新日期: 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();