2017-12-18 114 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以了解执行此操作的方法。