属性在设置后具有相同的值

本文关键字:设置 属性 | 更新日期: 2023-09-27 17:51:20

Q:

我在.aspx文件中有一个面板visibility=false,在我的代码中的某个时刻,我设置了visibilicy=true。但是问题是:当我跟踪代码时,我发现visibility属性仍然等于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();
                }
            }
        }

是什么原因导致了这个问题?

属性在设置后具有相同的值

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

所以很明显,你控制的父母仍然是看不见的!

将父对象设置为"可见"时,控件也将变为可见。

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

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

例如,如果您有一个占位符,而该占位符包含其他控件,并且该占位符的visible设置为false,则它的所有子控件也会将visible设为false,即使您自己显式设置了属性也是如此。