2012-02-01 45 views
0

在Windows窗體中,我有一些控件和一個UserControl。我在UserControl中有一個ErrorProvider。如果userControl中存在錯誤,我想停止編輯窗體中的所有控件。有沒有辦法做到這一點?通過錯誤提供程序禁用整個窗體

我使用errorProvider.BindToCustomDataAndErrors(..)

回答

1
  1. 暴露用戶控件的屬性表明它是否是通過遍歷控制收集和檢查errorProvider.GetError(control)

  2. 檢查你的財產,並禁止任何你需要

    有任何錯誤(如如果 { someContainerControl.Enabled = FALSE;} (myUserControl.IsValid!)

  3. 如果喲你需要'實時'通知,在用戶控件IsValidChanged上聲明一個事件,附加到它並在觸發時禁用你的控件,並且IsValid爲false。

1

您可以阻止用戶移動焦點脫離與驗證事件的用戶控件的。例如:

protected override void OnValidating(CancelEventArgs e) { 
     foreach (Control ctl in this.Controls) { 
      if (errorProvider1.GetError(ctl) != "") e.Cancel = true; 
     } 
     base.OnValidating(e); 
    } 

使用ErrorProvider.GetError()這樣是不理想的,儘管它可以工作。您可能想保留自己的驗證錯誤列表。

+0

我正在使用errorProvider.BindToCustomDataAndErrors(..)。所以這不能被使用,因爲我沒有調用ValidateChildren方法。所以OnValidating事件不會觸發。 – ABCD 2012-02-06 12:51:30

相關問題