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

时间:2012-02-01 12:01:48

标签: c# .net winforms errorprovider

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

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

2 个答案:

答案 0 :(得分:1)

您可以阻止用户使用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()虽然可行,但并不理想。您可能希望保留自己的验证错误列表。

答案 1 :(得分:1)

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

  2. 检查您的财产并禁用您需要的任何内容

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

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