我有一个包含大量文本框的网页表单,我希望在foreach语句中string.Empty
所有这些文本框如下:
foreach(Control c in this.Controls)
{
if(c is TextBox)
{
//..some code
}
}
但if语句没有返回true,尽管我在页面中有文本框。但是当我尝试写作时:
if(c is Control)
,它返回true,Textbox不返回。
看不出我做错了什么..谢谢你的帮助
答案 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" />
这样您就可以避免页面回发和循环遍历所有控件。它将有助于提高页面性能,只需重置控件即可。
我希望这会回答你的问题。如果是,请标记为“已回答”。