2008-11-19 83 views
5

早上好,文本框驗證,焦點切換問題

我正在使用控件驗證的C#winform應用程序。我遇到的問題是,當用戶點擊文本框並嘗試點擊時,驗證觸發並重新聚焦控件,基本上用戶不能將控件單擊出另一個控件。

我希望的結果是當用戶單擊提交按鈕時,表單上的所有控件都會被驗證。我希望errorProvider圖標顯示在出錯的字段旁邊,並允許用戶在他們認爲合適的時候更正它們。

我的問題是,如何設置控件以允許用戶在出現錯誤時單擊它以外的位置。我希望用戶有能力填寫表格的其餘部分,並自行回到錯誤狀態,而不是立即處理。

預先感謝您的幫助和建議,

回答

2

最簡單的方法是隻把所有的驗證在提交按鈕的處理程序,而不是在控制它呢。

-1

有一個屬性(我認爲它在表單上)允許您在驗證失敗時在字段之間移動。我不記得它叫什麼名字,但我認爲它的名字非常具有描述性。

+0

There's CausesValidation屬性,我相信你在目標控件上設置 - 但你需要將它設置爲false爲* everything *。爲了避免整個機制,IMO更簡單。 – 2008-11-19 15:46:48

+0

也許就是這樣 - 公平地說,我們通常會對按鈕點擊進行自己的驗證... – 2008-11-19 15:51:59

2

我們有一個返回布爾如果表單是有效的,並設置窗體上的所有錯誤提供驗證功能:

看起來是這樣的:

private void OnSave() 
    { 
     if(ValidateData()) 
     { 
     //do save 
     } 
    } 

    public bool ValidateData() 
    { 
     errorProvider.Clear(); 
     bool valid = true; 
     if (this.defectStatusComboBox.SelectedIndex == -1) 
     { 
      errorProvider.SetError(defectStatusComboBox, "This is a required feild."); 
      valid = false; 
     } 
     //etc... 
     return valid; 
    } 
23

形式有AutoValidate性質,可以設置爲允許更改焦點

5

表單屬性爲「AutoValidate」,它會影響表單上的所有控件。這是一個枚舉;將其設置爲System.Windows.Forms.AutoValidate.EnableAllowFocusChange以允許用戶退出驗證失敗的控件,但仍顯示允許用戶提示錯誤工具提示的錯誤圖標。

控制「CausesValidation」屬性是一個布爾值。如果這是真的,那麼控件引發觸發errorProvider的驗證事件。它是錯誤的,一切都被繞過,用戶可以退出控制,但沒有錯誤圖標或工具提示。