C# 動態產生button並且綁定click事件
C# 動態產生button並且綁定click事件
資料來源: http://www.jysblog.com/coding/c-%E5%8B%95%E6%85%8B%E7%94%A2%E7%94%9Fbutton%E4%B8%A6%E4%B8%94%E7%B6%81%E5%AE%9Aclick%E4%BA%8B%E4%BB%B6/
Code
private void DynamicGenerateButton()
{
// 按鈕數量計數
buttonCount = 0;
// 按鈕行數計算
rowCount = 0;
// 設定位置及按鈕寬高值
int LEFTANCHOR = 40;
int TOPANCHOR = -20;
int BTN_HEIGHT = 60;
int BTN_WIDTH = 130;
// 實例化按鈕
Button btn = new Button();
// 將按鈕加入Panel
panel_UIPanel.Controls.Add(btn);
btn.Left = LEFTANCHOR + 130 * (realDisplayBedCount % 6);
// 產生10個按鈕
for (int i = 0; i < bedCount; i++)
{
// 每產生五個按鈕行數加一
if (buttonCount % 5 == 0)
{
rowCount += 1;
}
// 將設定值餵給該按鈕,修改UI故用Invoke控制
this.Invoke(new Action(() =>
{
btn.Top = TOPANCHOR + 60 * rowCount;
btn.Height = BTN_HEIGHT;
btn.Width = BTN_WIDTH;
// 加入按鈕事件
btn.Click += dynamic_Btn_Click;
btn.Text = i.TiString();
}
// 計算已產生數量
buttonCount += 1;
}
}
private void dynamic_Btn_Click(object sender, EventArgs e)
{
// 撰寫事件內容
}
PS.其中事件內容可以針對不同Button去做相對應的case行為,像是我們可以在動態產生的時候給定Button的Tag屬性,然後在事件的function中使用case去判斷sender的Tag屬性,進而做不同的行為。