foreach (Control oControl in this.Controls) { if (oControl.GetType() == typeof(HtmlForm)) { foreach (Control item in oControl.Controls) { if (item.GetType() == typeof(TextBox)) { string id=((TextBox)item).ID; } } } }
为什么我页面上放的是TextBox,但是foreach的时候判断下来不是TextBox呢?
这里应该用递归。Control下面也有子Control。
protected void Button1_Click(object sender, EventArgs e) { foreach (Control c in this.Controls) { if (c is TextBox) { Response.Write(c.ClientID.ToString()); } } } 我是这么写的
public void FindControl(Control.ControlCollection c) { foreach (System.Windows.Forms.Control control in c) { if (control.HasChildren) { FindControl(control.Controls); } else { if (control is System.Windows.Forms.TextBox) { System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control; } } } }
private void Find(Control C) { foreach (Control control in c.Controls) { if (control is System.Web.UI.WebControls.TextBox) { TextBox txt = (TextBox)control; txt.Text = ""; } if (control.Controls.Count > 0) { Find(control); } } }
foreach (Control oControl in this.Controls)
{
if (oControl.GetType() == typeof(HtmlForm))
{
foreach (Control item in oControl.Controls)
{
if (item.GetType() == typeof(TextBox))
{
string id=((TextBox)item).ID;
}
}
}
}
为什么我页面上放的是TextBox,但是foreach的时候判断下来不是TextBox呢?
protected void Button1_Click(object sender, EventArgs e)
{
foreach (Control c in this.Controls)
{
if (c is TextBox)
{
Response.Write(c.ClientID.ToString());
} }
}
我是这么写的
{
foreach (System.Windows.Forms.Control control in c)
{
if (control.HasChildren)
{
FindControl(control.Controls);
}
else
{
if (control is System.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control;
}
}
}
}
{
foreach (Control control in c.Controls)
{
if (control is System.Web.UI.WebControls.TextBox)
{
TextBox txt = (TextBox)control;
txt.Text = "";
}
if (control.Controls.Count > 0)
{
Find(control);
}
}
}