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'.
コントロールの 1 つがラベル タイプでない場合、そのエラーが発生します。
あなたは試すことができます:
foreach(Label l in Controls.OfType<Label>())
{
l.Visible = true;
}
ページ上のすべてのラベルを表示するように設定するには、再帰関数が必要です。
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);
現在の「l」に必要な宛先タイプがあるかどうかを確認します。
foreach(control l in Controls) {
if(l is System.Web.UI.WebControls.Label)
l.Visible = true;
}
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);
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);