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

时间:2012-06-15 20:17:56

标签: c# winforms listview

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

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

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

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

那么我该怎么做呢?

抱歉我的英语不好:(。

6 个答案:

答案 0 :(得分:1)

您可以处理Closing形式的事件,因为如果您使用dot net 1.1以上的任何内容,已关闭事件已过时

答案 1 :(得分:1)

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

答案 2 :(得分: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!
}   

表格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事件,因此我采用这种方法来解决您的第二种情况。

答案 3 :(得分:0)

我无法发表评论,所以我在这里发帖。

你的意思是什么形式关闭?你能发贴你的代码吗?

如果您需要刷新另一个div的内容,那么我建议使用触发的ajax调用,但另一种形式使用事件。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

form2.ShowDialog(this);
updateList();