2010-05-24 54 views
3

我有兩個從公共基地繼承的表單類。其中一種形式稱爲模態,另一種是非模態的。焦點更改需要驗證,但表單取消時不需要驗證。當在模式窗體上選擇關閉框時,它會正確關閉,而不會在其控件上觸發任何驗證。當在非模態窗體上選擇關閉框時,將觸發驗證事件。 CausesValidation設置爲false的Cancel按鈕在兩種情況下均可正常工作。關閉框觸發器驗證非模態形式

我已經嘗試將非模態窗體上的CausesValidation設置爲false,但問題仍然存在。我應該提到的形式是mdi兒童。

任何想法?

Thx。

回答

3

將非模態窗體的「AutoValidate」屬性設置爲「禁用」。這將阻止表單隱式驗證所有子控件。

但是,如果您需要驗證所有子控件,可以使用Form.ValidateChildren()方法。這將強制驗證所有包含的子控件。

+0

謝謝你。這工作。仍然不確定爲什麼非模態窗體Close Box的操作與通過驗證的模態窗體不同。但是有時間繼續前進。 – Governor 2010-05-27 20:29:39

+0

這是設計。從MSDN主題中標題爲「Windows Forms中的用戶輸入驗證」的內容 - 「....此外,模式窗體在關閉時不會驗證控件的內容。您仍然可以使用控件驗證將焦點鎖定到控制,但你不必關心與關閉窗體相關的行爲....「 – Rajarshi 2010-05-28 03:28:04

+0

這個答案對我很好,特別是因爲驗證仍然會在我期望的時候自動發生(例如當一個'TextBox'獲得然後失去了重點)。 – Pat 2010-08-04 19:34:46