没有问题的。放在 Page_Load中。 using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls;namespace t1 { /// <summary> /// Summary description for WebForm2. /// </summary> public class WebForm2 : System.Web.UI.Page { protected System.Web.UI.WebControls.Label Label1; protected System.Web.UI.WebControls.Table Table1;
private void Page_Load(object sender, System.EventArgs e) { // Put user code to initialize the page here Button Btn1=new Button(); Btn1.Click += new System.EventHandler(this.EventTest); Btn1.Text="Click me"; Table1.Rows[0].Cells[0].Controls.Add(Btn1); } private void EventTest(object sender, System.EventArgs e) { Label1.Text = "Button 1 clicked"; } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); base.OnInit(e); }
/// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); } #endregion } }
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;namespace t1
{
/// <summary>
/// Summary description for WebForm2.
/// </summary>
public class WebForm2 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Table Table1;
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
Button Btn1=new Button();
Btn1.Click += new System.EventHandler(this.EventTest);
Btn1.Text="Click me";
Table1.Rows[0].Cells[0].Controls.Add(Btn1);
} private void EventTest(object sender, System.EventArgs e)
{
Label1.Text = "Button 1 clicked";
} #region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load); }
#endregion
}
}
你只要考虑postback以后控件会不会丢失
所以应该把动态控件放入page_load或 oninit中。