2010-04-26 88 views
0

我有一個帶有包含三個選項卡的選項卡控件的UserControl。選項卡內有多個控件 - 日期時間選擇器,文本框,組合框。C#用戶控件驗證

還有一個保存按鈕,當點擊時,調用this.ValidateChildren(ValidationConstraints.Enabled)現在,我點擊保存併發生geniune驗證錯誤。我更正了錯誤,然後再次單擊保存 - 在不同選項卡上的組合框上出現錯誤錯誤。如果我導航到這個標籤並點擊保存,一切正常。怎麼會這樣?我沒有改變組合框中的任何值,那麼失敗驗證如何通過驗證呢?

組合框被綁定到一個數據集,其selectedValue和Text集合。我只是不明白這裏發生了什麼。

對於某些文本框也會發生此行爲。驗證規則是它們必須是小數 - 默認值爲零,這是允許的。同樣的事情發生,他們第一次驗證失敗 - 我沒有做任何改變,再次點擊保存,他們通過驗證。

編輯:

的錯誤不是一個框架錯誤 - 錯誤是一個我我的驗證程序中提供。例如選擇一個有效的下拉選項。

我逐步瞭解了過程,有時組合框值是默認值,其他時候,selectedvalue是默認值,但文本爲空。我不知道如果我沒有改變組合框中的任何東西會發生這種情況。

如果您需要任何進一步的信息,請讓我知道

感謝

巴里

+0

錯誤是什麼? – Ando 2010-04-26 07:05:48

回答

3

以下是從MSDN報價:

「包含在TabPage的控制不創建直到被示出的標籤頁,並且在這些控件的任何數據綁定沒有被激活,直到被示出的標籤頁」。

所以我猜如果在你第一次按保存之前,你要確保你至少點擊了每個標籤一次,它會按預期工作,但如果你不看所有保存之前的標籤,它會失敗?

+0

謝謝何 - 我就是這麼想的。我已經添加了一些代碼來遍歷UserControl的Load事件中的每個選項卡,並且驗證按預期工作。 我很困惑,專注於驗證,我真的不認爲它可能是其他任何東西。 感謝您的幫助 – codingbadger 2010-04-26 07:40:11

0

是否檢查的默認值是不是null

+0

默認值不爲空。默認值被設置爲來自數據集的有效選項。例如,SelectedValue是1 - 文本是「我的下拉選項文本」 – codingbadger 2010-04-26 07:05:49

+0

然後您可以發佈錯誤消息嗎? – thelost 2010-04-26 07:08:41