C# 关闭另一个窗体时,在一个窗体中执行代码
所以我有C# 关闭另一个窗体时,在一个窗体中执行代码,c#,winforms,C#,Winforms,所以我有Form1和Form2 当我使用this.close()关闭Form2时,我希望Form1检测关闭并执行代码 可以这样做吗?是的,您可以在FormClosing事件中执行任何您想要的操作,但您需要 在Form1上声明一个静态属性,并在Form2中的FormClosing上设置值,在peroperty的set{}方法中写入任何要执行的内容 // in Form 2 private void Form2_FormClosing(object sender, FormClosingEventA
Form1
和Form2
当我使用this.close()
关闭Form2
时,我希望Form1
检测关闭并执行代码
可以这样做吗?是的,您可以在
FormClosing
事件中执行任何您想要的操作,但您需要
在Form1
上声明一个静态属性,并在Form2
中的FormClosing
上设置值,在peroperty的set{}
方法中写入任何要执行的内容
// in Form 2
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
Form1.IsForm2Closed = true;
}
Johnepraimtugado我不会说它是重复的,因为Denise可能不知道DialogResult。然而,丹尼斯,约翰的链接是你的答案。@Antoine谢谢:)我真的不知道对话结果,是的:)我会给它一个答案look@JohnEphraimTugado谢谢分享:)所以DialogResult和using FormClosing事件方法都解决了我的问题!。我想我会坚持DialogResult,因为我可以用它做得更多:)@Denise只是一个简单的提示。始终将鼠标悬停在该方法上,以查看它返回的内容。大多数时候,这不仅仅是空虚。这将在将来帮助你解决很多问题。我感觉自己像是被欺负了o.o.。你怎么能肯定地说我以前真的遇到过那些帖子?如果你要这么做,为什么不从
Form1
订阅Form2
事件的FormClosing
?目前的问题是,如果您想在Form1
中更改任何实例成员或调用任何实例方法,您不能这样做,因为您的代码使用的是静态属性。这似乎也是对属性设置器的滥用。这是一个好主意,你能举个例子,把它放在这里吗?@SiavashGhanbari所以在form1中,我将不断执行一个代码,检查bool是否为Form2Closed
?@Denise是的,这就是我的意思,这将是有效的,但我认为约翰的评论是相当可观的。@SiavashGhanbari Yup:)实际上这两种方法都解决了我的问题。谢谢你帮我:)
// in Form 1
private static _isForm2Closed ;
public static bool IsForm2Closed
{
get
{
return _isForm2Closed;
}
set
{
_isForm2Closed = value;
if(value)
{
// do whatever you want to execute here.
}
}
}