在Windows窗體中,我有一些控件和一個UserControl。我在UserControl中有一個ErrorProvider。如果userControl中存在錯誤,我想停止編輯窗體中的所有控件。有沒有辦法做到這一點?通過錯誤提供程序禁用整個窗體
我使用errorProvider.BindToCustomDataAndErrors(..)
在Windows窗體中,我有一些控件和一個UserControl。我在UserControl中有一個ErrorProvider。如果userControl中存在錯誤,我想停止編輯窗體中的所有控件。有沒有辦法做到這一點?通過錯誤提供程序禁用整個窗體
我使用errorProvider.BindToCustomDataAndErrors(..)
暴露用戶控件的屬性表明它是否是通過遍歷控制收集和檢查errorProvider.GetError(control)
檢查你的財產,並禁止任何你需要
有任何錯誤(如如果 { someContainerControl.Enabled = FALSE;} (myUserControl.IsValid!)
如果喲你需要'實時'通知,在用戶控件IsValidChanged上聲明一個事件,附加到它並在觸發時禁用你的控件,並且IsValid爲false。
您可以阻止用戶移動焦點脫離與驗證事件的用戶控件的。例如:
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.BindToCustomDataAndErrors(..)。所以這不能被使用,因爲我沒有調用ValidateChildren方法。所以OnValidating事件不會觸發。 – ABCD 2012-02-06 12:51:30