-1

我有一个带有很多文本框的网络表单,我想string.Empty在 foreach 语句中将所有这些文本框简单如下:

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

}

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

看不到我做错了什么..感谢您的帮助

4

3 回答 3

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);
    }
}
于 2012-11-20T17:56:51.393 回答
0

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

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

这样,您将避免页面回发和所有控件的循环。仅重置控件将有助于提高页面性能。

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

于 2012-11-20T17:57:17.197 回答
0

利用

c.GetType().ToString() == "System.Web.UI.WebControls.TextBox"
于 2012-11-20T17:49:38.750 回答