C# errorprovider赢得';在我清除错误之前,不要让我退出表单

C# errorprovider赢得';在我清除错误之前,不要让我退出表单,c#,winforms,C#,Winforms,为什么当我第一次来到我的窗口时,它是一个用户控件和组合框设置为空的窗体。我可以单击“取消”而不出现任何问题,窗口将关闭。但是,如果我触摸组合框,然后将其留空并尝试单击“取消”,则取消事件不会触发?我必须使用container.AutoValidate=.enablAllowFocuschange我必须使用container.AutoValidate=.enablAllowFocuschange我也有同样的问题,但后来我通过 将按钮的CausesValidation属性设置为False 重新设置

为什么当我第一次来到我的窗口时,它是一个用户控件和组合框设置为空的窗体。我可以单击“取消”而不出现任何问题,窗口将关闭。但是,如果我触摸组合框,然后将其留空并尝试单击“取消”,则取消事件不会触发?

我必须使用container.AutoValidate=.enablAllowFocuschange

我必须使用container.AutoValidate=.enablAllowFocuschange

我也有同样的问题,但后来我通过

  • 将按钮的CausesValidation属性设置为False
  • 重新设置窗体上的所有控件
  • 关闭表单

    while (Controls.Count > 0)
          {
              Controls[0].Dispose();
          }
          this.Close();
    
我将此代码添加到Button_Click()事件以及From_Closing事件中。 当做
Kshitij Thube

我也有同样的问题,但后来我通过

  • 将按钮的CausesValidation属性设置为False
  • 重新设置窗体上的所有控件
  • 关闭表单

    while (Controls.Count > 0)
          {
              Controls[0].Dispose();
          }
          this.Close();
    
我将此代码添加到Button_Click()事件以及From_Closing事件中。 当做
Kshitij Thube

你真正需要的是

 e.Cancel = False;

在窗体关闭事件中。

您真正需要的是

 e.Cancel = False;

在窗体关闭事件中。

罗德的回答引出了解决方案。 如果表单(错误提供程序的容器)
AutoValidate
-属性设置为
enableAllowFoucChange
,按钮事件将被处理,并且在
单击事件中,现在可以检查表单是否有无效子项:

Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    If Not ValidateChildren() Then Exit Sub
End sub

罗德的回答引出了解决方案。 如果表单(错误提供程序的容器)
AutoValidate
-属性设置为
enableAllowFoucChange
,按钮事件将被处理,并且在
单击事件中,现在可以检查表单是否有无效子项:

Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    If Not ValidateChildren() Then Exit Sub
End sub
..