在 Windows 窗体中,我有一些控件和一个 UserControl。我在 UserControl 中有一个 ErrorProvider。如果 userControl 中有错误,我想停止编辑 Form 中的所有控件。有没有办法做到这一点?
我正在使用 errorProvider.BindToCustomDataAndErrors(..)
在 Windows 窗体中,我有一些控件和一个 UserControl。我在 UserControl 中有一个 ErrorProvider。如果 userControl 中有错误,我想停止编辑 Form 中的所有控件。有没有办法做到这一点?
我正在使用 errorProvider.BindToCustomDataAndErrors(..)
您可以使用 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() 并不理想,尽管它可以工作。您可能希望保留自己的验证错误列表。
在用户控件上公开一个属性以指示它是否有任何错误(例如通过迭代控件集合和检查errorProvider.GetError(control)
检查您的财产并禁用您需要的任何东西
if (!myUserControl.IsValid) { someContainerControl.Enabled = false; }
如果您需要“实时”通知,请在用户控件 IsValidChanged 上声明一个事件,附加到它并在它触发并且 IsValid 为 false 时禁用您的控件。