清除.net文本框控件无法正常工作

时间:2012-11-20 17:45:17

标签: c# asp.net controls

我有一个包含大量文本框的网页表单,我希望在foreach语句中string.Empty所有这些文本框如下:

foreach(Control c in this.Controls)
{
  if(c is TextBox)
  {
      //..some code
  }

}

但if语句没有返回true,尽管我在页面中有文本框。但是当我尝试写作时: if(c is Control),它返回true,Textbox不返回。

看不出我做错了什么..谢谢你的帮助

3 个答案:

答案 0 :(得分:1)

你只是循环遍历this的直接孩子,这可能是页面对象。

要遍历包含嵌套的控件的页面上的所有控件,必须以递归方式遍历控件树。

public void RecursivelyClear(Control parent)
{
    for each (var theControl in parent.Controls)  {
        if (theControl is TextBox)
            // your code here ...
        if (theControl.HasControls)
            RecursivelyClear(theControl);
    }
}

答案 1 :(得分:0)

使用

c.GetType().ToString() == "System.Web.UI.WebControls.TextBox"

答案 2 :(得分:0)

重置表单的简单方法是添加一个RESET HTML按钮:

    <input type="reset" value="Reset" />

这样您就可以避免页面回发和循环遍历所有控件。它将有助于提高页面性能,只需重置控件即可。

我希望这会回答你的问题。如果是,请标记为“已回答”。