查询集/ Control.Visible的内部值

时间:2017-12-18 14:19:30

标签: c# asp.net

是否有机制将SET的值读取到控件的visible属性?

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

ParentControl.Visible = false;

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

在上面的示例中,childControl1Visible和childControl2Visible都将返回false,因为ParentControl的可见性都不会呈现。

我正在寻找一种方法来确定子控件是否已经设置为可见的true / false,而不管在任何父控件上设置的值。

1 个答案:

答案 0 :(得分:1)

无法获取内部值 - 它全部保存在名为internalsee source)的flags位向量内。

您可能必须在其他地方手动跟踪visible属性,或者将控件包装在您自己的继承类中,您可以在其中覆盖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