C# 在FormClosing事件之前清除表单中的所有元素

C# 在FormClosing事件之前清除表单中的所有元素,c#,winforms,C#,Winforms,我想检查表单关闭事件上的标签值: private void FrmDialog_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e) { if(label.Text == "something") { doSomething(); }

我想检查表单关闭事件上的标签值:

  private void FrmDialog_FormClosing(object sender,
 System.Windows.Forms.FormClosingEventArgs e)
        {
           if(label.Text == "something")
                {
                  doSomething();
                }
        }
但是,似乎表单中的所有元素都在FormClosing事件之前被清除,因为label为null。有什么方法可以做到我所描述的吗?

请尝试使用:

label.Text

除了
label.Text
中的键入错误外,您可以确定,在事件窗体.Closing的事件处理过程中,您没有自行处理的每个控件仍然可以正常工作。即使在Form.Closed期间和
protected override void Dispose(bool disposing)
期间,控件也应该仍然存在,否则,它们不能被处置,是吗

如果调试器不这么说,请检查是否确实订阅了event Form.Closing。
在过程
Dispose(bool disposing)
中放置断点,并检查在Dispose之前是否调用了事件处理程序。

label.text
不会编译。。。你确定你看到的是正确的标签吗?关闭时,任何内容都不会影响表单组件数据,除非有明确的代码来执行此类操作,以便首先获取label.text。尝试添加一个
字符串
,并在
中使用该字符串。因为像@TheGeneral评论说,除非代码告诉它,否则这些值不会消失。是的,这只是一个打字错误,与问题无关。我现在在问题中修正了它。我99.934534%确定这不是正确答案