我需要找到一種方法來確定控件的Visible屬性是通過屬性更改設置的,還是通過屬性更改來繼承它的值家長。使用Reflector,我發現函數this.GetVisibleCore()和this.GetState()都是內部方法,所以我不能調用它們。如何確定Control.Visible是通過屬性設置還是值被繼承
窗口小部件本身是動態創建的,所以我不想在創建每個窗口小部件之後將方法附加到VisibleChanged事件,因此可以嘗試監視此屬性。如果我必須,我想我會但是我正在尋找更優雅的東西。
編輯
當我隱藏的形式,去關閉它或建立的形式,但掩蓋它。我真正想知道的是,什麼可見的值是假的,因爲形式是隱藏的,什麼樣的價值觀是錯誤的因爲它們被設置爲假。再次,我不想爲每個Widget的每個VisibleChanged事件添加一個方法。我只是想以某種方式從Control對象讀取它。
非常不清楚。你想知道Visible屬性是否被覆蓋? – 2010-04-16 22:10:36
不,我想知道何時設置了Visible屬性。當窗體本身被隱藏或者尚未顯示時,所有控件可見屬性都爲false。當表單可見時,所有可見屬性都切換爲true,除非在代碼中將其設置爲false。隱藏表單並且Visible屬性變爲false。我想知道的是如何確定Control是否設置了Visible屬性,並且它的值是多少,而不管它作爲兒童分配給它的表單/容器的Shown/Hidden狀態。 – JDMX 2010-04-16 22:22:41
也許你可以創建一個輔助函數,循環遍歷所有的控件來創建一個包含所有可見控件的數組。然後,您可以使用此列表來顯示/隱藏表單控件,無論加載後發生了什麼變化。我假設你只是希望能夠顯示/隱藏自定義表單。 – Zachary 2010-04-16 23:14:58