以下两种方式全都是从网上找来的解决办法:
在Asp.net中可以使用反射实现,以TextBox为例
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
TextBox tb = new TextBox();
this.Panel1.Controls.Add(tb);
if(!Page.IsPostBack)
{
tb.ID="clt";
tb.Text="TextBox的文本";
}
Response.Write (this.GetPropertyValue("clt","Text"));
}
protected string GetPropertyValue(string ControlID,string PropertyName)
{
Control c=null;
this.FinControlFromID(this,ControlID,ref c);
if(c==null)
return string.Empty;
System.Type t=c.GetType();
return t.InvokeMember(PropertyName,System.Reflection.BindingFlags.GetProperty,null,c,null).ToString();
}
//遍历查找控件
protected void FinControlFromID(Control ParentControl,string ControlID,ref Control ctr)
{
foreach(Control c in ParentControl.Controls)
{
if(c.ID==ControlID)
{
ctr=c;break;
}
FinControlFromID(c,ControlID,ref ctr);
}
}
在C#中, 则直接使用以下方式:
string str = "abc ";
((Button)(this.Controls.Find(str, true)[0])).PerformClick();
在Asp.net中可以使用反射实现,以TextBox为例
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
TextBox tb = new TextBox();
this.Panel1.Controls.Add(tb);
if(!Page.IsPostBack)
{
tb.ID="clt";
tb.Text="TextBox的文本";
}
Response.Write (this.GetPropertyValue("clt","Text"));
}
protected string GetPropertyValue(string ControlID,string PropertyName)
{
Control c=null;
this.FinControlFromID(this,ControlID,ref c);
if(c==null)
return string.Empty;
System.Type t=c.GetType();
return t.InvokeMember(PropertyName,System.Reflection.BindingFlags.GetProperty,null,c,null).ToString();
}
//遍历查找控件
protected void FinControlFromID(Control ParentControl,string ControlID,ref Control ctr)
{
foreach(Control c in ParentControl.Controls)
{
if(c.ID==ControlID)
{
ctr=c;break;
}
FinControlFromID(c,ControlID,ref ctr);
}
}
在C#中, 则直接使用以下方式:
string str = "abc ";
((Button)(this.Controls.Find(str, true)[0])).PerformClick();