我正在使用c#。爲什麼CausesValidation不會從容器傳播到子控件?
爲什麼CausesValidation屬性不會從容器傳播到子控件?
我有一個TabControl,我需要在所有選項卡上執行用戶輸入驗證。 但每個標籤都是獨立的。我發現如果我有一個像TableLayoutPanel的容器,並將CausesValidation設置爲false,則子組件仍然執行驗證。
所以這個代碼是行不通的:
Foreach(Control c in Container.Controls)
{
c.CausesValidation = False;
}
如果你做一些調試輸出,你會看到,只發現控件是TableLayoutPanel中或類似的GroupBox任何其他容器中會被發現,並設置爲False 。但容器不會將該值傳播到子級別。 很多人問我們如何才能解決問題。我發現了很多方法,但是我創建了一個靜態類,它允許我在TabControl上選擇我想要執行驗證的選項卡,並且它將在該TabControl的所有控件上設置CausesValidation爲False,包括帶有10層的深度。如果你想要這個圖書館只是要求它!
我真正的問題是,不應該容器傳播該屬性到其子控件,並且該子控件可以控制任何子控件?
通過創建非常特定的應該從頭開始工作的非常具體的代碼,可以爲我們節省很多工作嗎?爲什麼這不是隱含的?