有時候需要在程式運行到一定時候或者某個事件之後需要動態產生控制項
在C#下一般方式是:
private Button Db=new Button() ;
Db.Name="Dy_Button" //設定名稱
Db.Location=new Point(100,200);//設定位置
。。。。//其他屬性設定
//這裡添加訊息處理
Dpb.MouseClick += new EventHandler(this.pictureBox_MouseClick);
this.Controls.Add (Db);//添加到控制群組中
現在編寫這個訊息處理的函數pictureBox_Click()
private void pictureBox_MouseClick(object
sender,EventArgs e)
{
MessageBox.Show("click");
}
首先,建立一個全域變數"i
"用來區分各個新的按鈕:
然後在已有的按鈕中添加方法如下:
private
void button1_Click(object sender, System.EventArgs e)
{
i++;
Button b = new Button();//建立一個新的按鈕
b.Name="b"+i;//這是我用來區別各個按鈕的辦法
System.Drawing.Point p = new Point(12,13+i*30);//建立一個座標,用來給新的按鈕定位
b.Location = p;//把按鈕的位置與剛建立的座標綁定在一起
panel1.Controls.Add(b);//向panel中添加此按鈕
b.Click += new System.EventHandler(btn_click);//將按鈕的方法綁定到按鈕的單擊事件中b.Click是按鈕的單擊事件
}
private void btn_click(object sender, System.EventArgs e)
{
Button b1 = (Button)sender;//將觸發此事件的對象轉換為該Button對象
MessageBox.Show(""+b1.Name);
}