2017-12-18 113 views
1

是否有一種機制來讀取SET設置爲控件的可見屬性的值?Control.Visible的查詢集/內部值

ChildControl1.Visible = true; 
ChildControl2.Visible = false; 

ParentControl.Visible = false; 

bool childControl1Visible = ChildControl1.Visible 
bool childControl2Visible = ChildControl2.Visible 

在上面的例子中,兩個childControl1Visible和childControl2Visible將返回false既不會由於被渲染到ParentControl的可見性。

我正在尋找一種方法來確定是否將子控件本身設置爲可見真/假,而不管在任何父控件上設置的值如何。

回答

1

沒有辦法獲得內部值 - 它全部保存在名爲flagssee source)的internal位向量中。

您將不得不在別處手動跟蹤可見屬性,或者將控件包裝在自己的繼承類中,您可以在其中覆蓋Visible屬性並在其中公開該值。例如:

public class MyTextBox : System.Web.UI.WebControls.TextBox 
{ 
    public bool Visible 
    { 
     get 
     { 
      return base.Visible; 
     } 
     set 
     { 
      ReallyVisible = value; 
      vase.Visible = value; 
     } 
    } 

    public bool ReallyVisible { get; private set; } 
} 

您可能想要選擇一個更好的屬性名稱!

另一個拙劣的方法是使用反射來獲取內部價值。請參閱here以瞭解執行此操作的方法。