Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过错误提供程序禁用整个表单_C#_.net_Winforms_Errorprovider - Fatal编程技术网

C# 通过错误提供程序禁用整个表单

C# 通过错误提供程序禁用整个表单,c#,.net,winforms,errorprovider,C#,.net,Winforms,Errorprovider,在Windows窗体中,我有一些控件和一个UserControl。我在UserControl中有一个ErrorProvider。如果userControl中有错误,我想停止编辑表单中的所有控件。有办法吗 我使用的是errorProvider.BindToCustomDataAndErrors(..)您可以防止用户通过验证事件将焦点移出UserControl。例如: protected override void OnValidating(CancelEventArgs e) {

在Windows窗体中,我有一些控件和一个UserControl。我在UserControl中有一个ErrorProvider。如果userControl中有错误,我想停止编辑表单中的所有控件。有办法吗


我使用的是errorProvider.BindToCustomDataAndErrors(..)

您可以防止用户通过验证事件将焦点移出UserControl。例如:

    protected override void OnValidating(CancelEventArgs e) {
        foreach (Control ctl in this.Controls) {
            if (errorProvider1.GetError(ctl) != "") e.Cancel = true;
        }
        base.OnValidating(e);
    }
像这样使用ErrorProvider.GetError()并不理想,尽管它可以工作。您可能希望保留自己的验证错误列表

  • 公开用户控件上的属性以指示其是否有任何错误(例如,通过迭代控件集合并选中
    errorProvider.GetError(control)

  • 检查您的属性并禁用您需要的任何功能

    如果(!myUserControl.IsValid) { someContainerControl.Enabled=false; }

  • 如果您需要得到“实时”通知,请在用户控件IsValidChanged上声明一个事件,当它触发且IsValid为false时,附加到它并禁用您的控件


  • 我使用的是errorProvider.BindToCustomDataAndErrors(..)。因此无法使用该方法,因为我没有调用ValidateChildren方法。因此,请继续验证未触发的事件。