无效的强制转换异常C#ASP.Net

时间:2012-09-30 09:18:30

标签: c# asp.net casting

foreach(Label l in Controls)    // setting all labels' s visbility  on page to true
     l.Visible =true;

但是在跑步时,我收到了以下错误

Unable to cast object of type 'ASP.admin_master' to type 'System.Web.UI.WebControls.Label'.

5 个答案:

答案 0 :(得分:5)

如果其中一个控件不是标签类型,您将收到该错误。

你可以尝试:

foreach(Label l in Controls.OfType<Label>())
{
    l.Visible = true;
}

答案 1 :(得分:3)

如果您希望页面上的所有标签设置可见,则需要递归功能。

private void SetVisibility<T>(Control parent, bool isVisible)
{
    foreach (Control ctrl in parent.Controls)
    {
        if(ctrl is T)
            ctrl.Visible = isVisible;
        SetVisibility<T>(ctrl, isVisible);
    }
}

用法:

SetVisibility<Label>(Page, true);

答案 2 :(得分:0)

检查当前“l”是否具有所需的目的地类型:

foreach(control l in Controls) {
    if(l is System.Web.UI.WebControls.Label)
        l.Visible = true;
}

答案 3 :(得分:0)

foreach(Control l in Controls)    
        if (l is Label)    l.Visible =true;

如果您想要所有层次结构:

  public static void SetAllControls( Type t, Control parent /* can be Page */)
    {
        foreach (Control c in parent.Controls)
        {
            if (c.GetType() == t) c.Visible=true;
            if (c.HasControls())  GetAllControls( t, c);
        }

    }

 SetAllControls( typeof(Label), this);

答案 4 :(得分:0)

public void Search(Control control)
    {
        foreach (Control c in control.Controls)
        {
            if (c.Controls.Count > 0)
                Search(c);
            if (c is Label)
                c.Visible = false;
        }
    }

Search(this.Page);