在編寫C#窗體應用程序的時候,有時候需要生成好多個功能相似的同一種控件(比如數字鍵盤按鍵、單選框等),這時候使用窗體編輯器,費時費力,不便於修改。因此可以采用批量生成控件的形式。
以批量生成按鈕為例
Button[] bnt = new Button[16];
使用代碼批量生成。
需要注意坐標是相對於父容器而言的,如果要在groupbox中生成,需要指定父容器(推薦)
for(int i = 0; i < 16; i++)
{
//實例化
bnt[i] = new Button();
//定義控件名稱
bnt[i].Name = "bntton_"+i.ToString();
//定義text屬性,可以用string數組初始化為指定值
bnt[i].Text = i.ToString();
//注:如果不指定父容器,則坐標是相對於主窗體的
bnt[i].Parent = groupBox1;
//定義坐標
bnt[i].Location = new Point(20+(i%4)*50,20+(i/4)*50);
//調整大小
//bnt[i].AutoSize = true;
bnt[i].Size = new Size(50,50);
//批量添加事件
bnt[i].Click+= new EventHandler( bntton_Click);
}
為他們統一編寫點擊事件,sender即為觸發該事件的控件對象,使用類型轉換為Button。
此時如果我點擊了Button_7
則((Button)sender)等同於Button_7
//Sender為觸發對象
private void bntton_Click(object sender, EventArgs e)
{
MessageBox.Show("點擊了 "+((Button)sender).Name.ToString());
}