ga('set', 'anonymizeIp', 1);
Categories: C#Coding

[C#] 動態產生button並且綁定click事件

Share

C#視窗程式設計中常常會需要用到動態產生UI元件,並作相應的動作。

本文講述如何動態生成UI Button並且綁定使用者Click事件。

動態產生Button

假設我們有一個Panel叫做panel_UIPanel,那麼我們要在該Panel上動態產生Button的如下。

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)
{
    // 撰寫事件內容
}

其中事件內容可以針對不同Button去做相對應的case行為,
像是我們可以在動態產生的時候給定Button的Tag屬性,
然後在事件的中使用case去判斷sender的Tag屬性,
進而做不同的行為。

Jys

Published by
Jys

Recent Posts

[python] Flask Create RESTful API

This article gi... Read More

3 年 前發表

[Javascript] 新增/刪除JSON中key值

在web訊息交換常會需要對JS... Read More

3 年 前發表

[JAVA] SQL Server Connection

本文介紹JAVA連線SQL s... Read More

3 年 前發表