属性设置后具有相同的值

时间:2011-04-20 10:49:10

标签: c# .net asp.net panel

问:

我在.aspx文件中有一个面板的visibility = false,在我的代码中的某个时刻我设置visibility = true.but 问题是:当我跟踪代码时我发现可见属性仍然等于false,尽管我将其设置为true。 我的面板名称为:pnl_DetailsGeneral

 protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (RadioButtonList1.SelectedValue == "2")
            {
                drp_Week.Enabled = false;
                gv_Details.Visible = false;
                panel_rmv.Visible = false;
                pnl_DetailsGeneral.Visible = true;//Here when i put a break point and after setting visible to true i find `pnl_DetailsGeneral.Visible = false`
                gv_DetailsGeneral.Visible = true;
                BindGridGeneral();

            }
            else if (RadioButtonList1.SelectedValue == "1")
            {
                drp_Week.Enabled = true;
                gv_Details.Visible = true;
                gv_DetailsGeneral.Visible = false;
                pnl_DetailsGeneral.Visible = false;
                if (drp_Week.SelectedValue != "-1")
                {

                    BindGrid();
                }
            }
        }

可能导致此问题的原因是什么?

3 个答案:

答案 0 :(得分:4)

Visible属性有一个特殊的属性:当你读取它时,它不仅会报告控件本身,还会报告它的父级。您获得的价值是“真正的”可见性。

显然你的控制之父仍然是看不见的!

当您将父级设置为Visible时,您的控件也将变为可见。

答案 1 :(得分:1)

我相信如果任何父级具有Visible = false,则Control.Visible属性返回false。

答案 2 :(得分:1)

可能的解释是通过控制层次结构的隐式可见性。

例如,如果你有一个占位符而不是包含其他控件,并且占位符的可见设置为false,那么即使你自己明确设置了属性,它的所有子控件也都会将Visible设置为false。