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.
       }
    }
}