C# 在窗体关闭时执行某些操作
如何检查表单是否已关闭 我想在关闭另一个表单时重新加载listview的项目。C# 在窗体关闭时执行某些操作,c#,winforms,listview,C#,Winforms,Listview,如何检查表单是否已关闭 我想在关闭另一个表单时重新加载listview的项目。 我正在做的是: Form1=具有ListView的表单 Form2=带有文本框的表单 打开一个新表单 通过文本框创建新文件夹 当我在Form2中按“Add”时,我想在Form1上重新加载“ListView” 那我该怎么做呢 很抱歉我的英语不好:(.您可以处理表单事件,因为关闭的事件已过时。如果您在表单1中使用的是高于dot net 1.1的任何内容,您可以订阅From2的事件。如果您只想在关闭特定表单时对其作出反
我正在做的是: Form1=具有ListView的表单
Form2=带有文本框的表单
- 打开一个新表单
- 通过文本框创建新文件夹
- 当我在Form2中按“Add”时,我想在Form1上重新加载“ListView”
很抱歉我的英语不好:(.您可以处理表单事件,因为关闭的事件已过时。如果您在表单1中使用的是高于dot net 1.1的任何内容,您可以订阅From2的事件。如果您只想在关闭特定表单时对其作出反应,您可以处理
FormClosed
事件。如果您想更进一步,有一个mClosing
事件,您也可以处理该事件,甚至可以在需要时阻止表单关闭。最简单的答案是在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中按“Add”时,我希望在Form1上重新加载“ListView”正如其他人所提到的,您可以使用
Closed
事件,因此我采用这种方法来解决第二种情况。让Form1向Form2的FormClosing
事件添加事件处理程序是一个很好的选择。但是,如果Form2是一个对话框窗口,则有一个更简单的解决方案。换句话说,如果Form1可以如果在显示Form2时有效地锁定和禁用,您只需将Form2显示为一个对话框窗口。对话框窗口同步显示,因此您只需在显示Form2后立即更新列表,直到关闭Form2后,列表更新代码才会出现。例如:
form2.ShowDialog(this);
updateList();
@GrantWinney是的,我想在Form1Closed事件中重新加载listview是过时的,除非您仍在使用.NET 1.0。它实际上在您提供的超链接中说明了很多。哇,您的示例看起来不错!是的,我知道,我的问题有点挑剔:(,但我的意思是当我按“添加”时)按钮,该按钮执行一些代码,然后关闭表单。@Darkshadw稍微调整了示例,以便为ya关闭表单。=)这会起作用,但封装得不太好。例如,如果你想从另一个父窗体重用Form2,如果不作进一步修改,它将不起作用,因为它假定它的父窗体始终是Form1。@SteveDog我明白了,好吧,我将尝试一下,谢谢!@SteveDog是的,这不是超级工程我的解决方案只是想给他一个起点,但你们的观点都是正确的。