将所有文本框设置为只读

时间:2014-01-13 19:35:54

标签: c# asp.net textbox code-behind

如何从后面的母版页代码中设置所有TextBox readonly?

我尝试了以下代码,但它不起作用:

protected void Page_Load(object sender, EventArgs e)
{
   foreach (Control c in this.Controls)
   {
     if (c is TextBox)
        ((TextBox)c).ReadOnly = true;
   }
}

感谢的

3 个答案:

答案 0 :(得分:2)

Ebyrob和我有同样的想法,添加了一个空参考保护并检查控件是否有子节点(减少调用)。

  protected void Page_Load(object sender, EventArgs e)
    {
        SetReadonly(this);
    }
    private void SetReadonly(Control c)
    {
        if (c == null)
        {
            return; 
        }
        foreach (Control item in c.Controls)
        {
            if (item.HasChildren)
            {
                SetReadonly(c);
            }
            else if (c is TextBox)
            {
                ((TextBox)c).ReadOnly = true;
            }

        }
    }

答案 1 :(得分:1)

尝试:

protected void Page_Load(object sender, EventArgs e)
{
  foreach (TextBox textbox in this.Controls.OfType<TextBox>())
   {
        textbox.ReadOnly = true;
   }
}

答案 2 :(得分:0)

试试这个。我测试这个并且工作正常

 private void SetReadonly(Control c)
    {
        if (c == null)
        {
            return;
        }
        foreach (Control item in c.Controls)
        {

            if (item is TextBox)
            {
                ((TextBox)item).ReadOnly = true;
            }

            else if (item.HasControls())
            {
                SetReadonly(item);
            }

        }
    }