属性设置后具有相同的值

问:

我在.aspx文件中有一个面板的visibility = false,在我的代码中的某个时刻,我设置的visibility = true。 但问题是 :当我跟踪代码时,我发现visible属性仍然等于false,尽管我设置了它为真。 我的面板名称是: 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。

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

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