问:
我在.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();
}
}
}
可能导致此问题的原因是什么?
答案 0 :(得分:4)
Visible属性有一个特殊的属性:当你读取它时,它不仅会报告控件本身,还会报告它的父级。您获得的价值是“真正的”可见性。
显然你的控制之父仍然是看不见的!
当您将父级设置为Visible时,您的控件也将变为可见。
答案 1 :(得分:1)
我相信如果任何父级具有Visible = false,则Control.Visible
属性返回false。
答案 2 :(得分:1)
可能的解释是通过控制层次结构的隐式可见性。
例如,如果你有一个占位符而不是包含其他控件,并且占位符的可见设置为false,那么即使你自己明确设置了属性,它的所有子控件也都会将Visible设置为false。