为什么我的usercontrol会将其visible属性重置为false?

时间:2009-07-06 11:57:46

标签: c# asp.net

好的,我的页面上有一个用户控件。

在页面上,visible属性设置为false。

在OnPreRender事件中,我将visible属性设置为true。

它运行代码行,但实际上并没有改变任何东西。 (所以可见仍然是假的)

这个完全相同的方法适用于所有其他控件,并且此控件没有什么特别之处。

任何想法??

2 个答案:

答案 0 :(得分:10)

检查包含此控件的任何控件的可见属性。

设置Visible = True并不意味着Visible == True,如果父控件为False,它仍将返回False。

除此之外,您可能需要发布一些代码示例,以便任何人帮助找出问题所在。

答案 1 :(得分:1)

我遇到了同样的问题......是的,问题是父母不可见。所以我为解决这个问题做了一些代码安静:

  public static void ForceVisibleState(Control control, bool visible)
  {
     if (!visible)
     {
        control.Visible = false;
     }
     else
     {
        // Must set all parents to 'visible = true'
        List<Control> parents = new List<Control>();
        while (control != null &&
               !control.Visible)
        {
           parents.Insert(0, control);
           control = control.Parent;
        }
        foreach(Control parent in parents)
        {
           parent.Visible = true;
        } 
     }
  }