C#如何为动态创建的控件定义事件?

C#如何为动态创建的控件定义事件?,c#,events,dynamic,controls,C#,Events,Dynamic,Controls,我编写了一个动态创建按钮的代码。代码运行良好,在我单击按钮时创建控件。现在,下一个任务是,我想为这些动态创建的控件定义单击事件。我该怎么做?下面是代码,请修改此代码并粘贴在回复中,以便于我理解 public partial class Form1 : Form { public Form1() { InitializeComponent(); } // create controls dynamically on form int n =

我编写了一个动态创建按钮的代码。代码运行良好,在我单击按钮时创建控件。现在,下一个任务是,我想为这些动态创建的控件定义单击事件。我该怎么做?下面是代码,请修改此代码并粘贴在回复中,以便于我理解

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    // create controls dynamically on form
    int n = 4;
    private void btnDisplay_Click_1(object sender, EventArgs e)
    {
        Button[] button = new Button[n];

        int previousButtonPositionY;
        int previousButtonHeight;

        for (int i = 0; i < n; i++)
        {
            button[i] = new Button();
            button[i].Name = "btnButton" + i;
            button[i].Text = "btnButton" + i;
            if (i > 0)
            {
                previousButtonPositionY = button[i - 1].Location.Y;
                previousButtonHeight = button[i - 1].Height;
            }
            else 
            {
                previousButtonPositionY = 50;
                previousButtonHeight = 0;
            }

            button[i].Location = new Point(0, previousButtonPositionY + previousButtonHeight);
        }

        for (int i = 0; i < n; i++)
        {
            panel1.Controls.Add(button[i]);
        }
    }
}
公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
}
//在窗体上动态创建控件
int n=4;
私有void btnDisplay_Click_1(对象发送方,事件参数e)
{
按钮[]按钮=新按钮[n];
int先前的按钮位置;
int-previousButtonHeight;
对于(int i=0;i0)
{
previousButtonPositionY=按钮[i-1]。位置.Y;
previousButtonHeight=按钮[i-1]。高度;
}
其他的
{
以前的按钮位置=50;
previousButtonHeight=0;
}
按钮[i]。位置=新点(0,PreviousButtonPosition+previousButtonHeight);
}
对于(int i=0;i
初始化按钮后,您可以使用

button[i].Click += new EventHandler(button_Click);

更多信息:

谢谢您的回复。如何在特定条件下取消订阅此事件处理程序?按钮[i]。单击-=新建事件处理程序(按钮\U单击);