0

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

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

4

2 回答 2

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() 并不理想,尽管它可以工作。您可能希望保留自己的验证错误列表。

于 2012-02-01T12:34:21.303 回答
1
  1. 在用户控件上公开一个属性以指示它是否有任何错误(例如通过迭代控件集合和检查errorProvider.GetError(control)

  2. 检查您的财产并禁用您需要的任何东西

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

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

于 2012-02-01T21:56:01.903 回答