3
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'.

4

5 に答える 5

5

コントロールの 1 つがラベル タイプでない場合、そのエラーが発生します。

あなたは試すことができます:

foreach(Label l in Controls.OfType<Label>())
{
    l.Visible = true;
}
于 2012-09-30T09:20:55.950 に答える
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);
于 2012-09-30T09:32:00.937 に答える
0

現在の「l」に必要な宛先タイプがあるかどうかを確認します。

foreach(control l in Controls) {
    if(l is System.Web.UI.WebControls.Label)
        l.Visible = true;
}
于 2012-09-30T09:22:46.703 に答える
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);
于 2012-09-30T09:23:10.667 に答える
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);
于 2012-09-30T09:49:31.343 に答える