1

如何检查表单是否已关闭?

当我关闭另一个表单时,我想重新加载列表视图的项目。
我正在做的是:

Form1 = 带有 ListView
的表单 Form2 = 带有 TextBoxes的表单

  • 打开一个新表格。
  • 通过文本框创建一个新文件夹。
  • 当我在 Form2 中按“添加”时,我想在 Form1 上重新加载“ListView”。

那么我该怎么做呢?

对不起我的英语不好:(。

4

5 回答 5

1

如果您使用高于 dot net 1.1 的任何内容,您可以处理表单关闭事件,因为关闭事件已过时

于 2012-06-15T20:22:57.240 回答
1

在 Form1 中,您可以订阅 From2 的FormClosed事件。

于 2012-06-15T20:23:02.787 回答
1

最简单的答案是在 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事件,因此我采用这种方法来解决您的第二种情况。

于 2012-06-15T20:27:25.677 回答
0

FormClosed如果您只是想在关闭特定表单时做出反应,您可以处理该事件。如果您想更进一步,FormClosing您还可以处理一个事件,甚至在需要时阻止表单关闭。

于 2012-06-15T20:24:38.450 回答
0

让 Form1 为 Form2 的FormClosing事件添加一个事件处理程序是一个很好的选择。但是,如果 Form2 是一个对话窗口,还有一个更简单的解决方案。换句话说,如果在显示 Form2 时有效锁定和禁用 Form1 是可以的,您可以简单地将 Form2 显示为对话框窗口。对话框窗口同步显示,因此您可以在显示 Form2 后立即更新列表,并且在 Form2 关闭之前它不会点击该列表更新代码。例如:

form2.ShowDialog(this);
updateList();
于 2012-06-15T20:30:25.773 回答