按错误提供程序禁用整个表单

本文关键字:表单 程序 错误 | 更新日期: 2023-09-27 18:22:02

在Windows窗体中,我有一些控件和一个UserControl。我在UserControl中有一个ErrorProvider。如果userControl中出现错误,我希望停止编辑表单中的所有控件。有办法做到这一点吗?

我正在使用errorProvider.BindToCustomDataAndErrors(..)

按错误提供程序禁用整个表单

  1. 暴露用户控件上的属性,以指示它是否有任何错误(例如通过迭代控件集合并检查errorProvider.GetError(control)

  2. 检查您的财产并禁用所需的一切

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

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

您可以通过Validating事件阻止用户将焦点移出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()是不理想的,尽管它可以工作。您可能需要保留自己的验证错误列表。