我有一个带有很多文本框的网络表单,我想string.Empty
在 foreach 语句中将所有这些文本框简单如下:
foreach(Control c in this.Controls)
{
if(c is TextBox)
{
//..some code
}
}
但是 if 语句没有返回 true,尽管我在页面中有文本框。但是当我尝试写:时
if(c is Control)
,它返回真,文本框不。
看不到我做错了什么..感谢您的帮助
您只循环遍历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);
}
}
重置表单的简单方法是添加一个 RESET HTML 按钮:
<input type="reset" value="Reset" />
这样,您将避免页面回发和所有控件的循环。仅重置控件将有助于提高页面性能。
我希望这能回答你的问题。如果是,请标记为“已回答”。
利用
c.GetType().ToString() == "System.Web.UI.WebControls.TextBox"