C# 单击按钮数组的事件

C# 单击按钮数组的事件,c#,windows,winforms,button,C#,Windows,Winforms,Button,我在C#WFA中有一个按钮数组,我想为单击数组中的任何按钮创建一个事件。 我怎么做? 如何知道它在阵列中的哪个位置? 我知道发送方是按钮本身您可以将事件处理程序添加到for循环中的每个按钮 在处理程序内部,您可以调用array.IndexOf((按钮)sender)您可以将事件处理程序添加到for循环中的每个按钮 在处理程序内部,您可以调用array.IndexOf((按钮)sender)您可以使用for循环来关闭包含当前索引的变量: for(int i = 0; i < buttons.

我在C#WFA中有一个按钮数组,我想为单击数组中的任何按钮创建一个事件。 我怎么做? 如何知道它在阵列中的哪个位置?
我知道发送方是按钮本身

您可以将事件处理程序添加到for循环中的每个按钮


在处理程序内部,您可以调用
array.IndexOf((按钮)sender)

您可以将事件处理程序添加到for循环中的每个按钮


在处理程序内部,您可以调用
array.IndexOf((按钮)sender)

您可以使用
for
循环来关闭包含当前索引的变量:

for(int i = 0; i < buttons.Length; i++)
{
    //it's important to have this; closing over the loop variable would be bad
    int index = i;  
    buttons[i].Click += (sender, args) => SomeMethod(buttons[index], index);
}
for(int i=0;iSomeMethod(按钮[index],索引);
}

您可以使用
for
循环关闭包含当前索引的变量:

for(int i = 0; i < buttons.Length; i++)
{
    //it's important to have this; closing over the loop variable would be bad
    int index = i;  
    buttons[i].Click += (sender, args) => SomeMethod(buttons[index], index);
}
for(int i=0;iSomeMethod(按钮[index],索引);
}
试试这个

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

        Button[] myButtons = new Button[10];
        private void Form1_Load(object sender, EventArgs e)
        {

            for(int i = 0; i < myButtons.Length; i++)
            {
                int index = i;
                this.myButtons[i] = new Button();

                this.myButtons[i].Location = new System.Drawing.Point(((i + 1) * 70), 100 + ((i + 10) * 5));
                this.myButtons[i].Name = "button" + (index + 1);
                this.myButtons[i].Size = new System.Drawing.Size(70, 23);
                this.myButtons[i].TabIndex = i;
                this.myButtons[i].Text = "button" + (index + 1);
                this.myButtons[i].UseVisualStyleBackColor = true;
                this.myButtons[i].Visible = true;

                myButtons[i].Click += (sender1, ex) => this.Display(index+1);

                this.Controls.Add(myButtons[i]);
            }
        }

        public void Display(int i)
        {
            MessageBox.Show("Button No " + i);
        }

    }
}
命名空间窗口窗体应用程序1
{
公共部分类Form1:Form
{
公共表格1()
{
初始化组件();
}
按钮[]myButtons=新按钮[10];
私有void Form1\u加载(对象发送方、事件参数e)
{
对于(int i=0;i此。显示(索引+1);
this.Controls.Add(myButtons[i]);
}
}
公共空白显示(int i)
{
MessageBox.Show(“按钮编号”+i);
}
}
}
试试这个

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

        Button[] myButtons = new Button[10];
        private void Form1_Load(object sender, EventArgs e)
        {

            for(int i = 0; i < myButtons.Length; i++)
            {
                int index = i;
                this.myButtons[i] = new Button();

                this.myButtons[i].Location = new System.Drawing.Point(((i + 1) * 70), 100 + ((i + 10) * 5));
                this.myButtons[i].Name = "button" + (index + 1);
                this.myButtons[i].Size = new System.Drawing.Size(70, 23);
                this.myButtons[i].TabIndex = i;
                this.myButtons[i].Text = "button" + (index + 1);
                this.myButtons[i].UseVisualStyleBackColor = true;
                this.myButtons[i].Visible = true;

                myButtons[i].Click += (sender1, ex) => this.Display(index+1);

                this.Controls.Add(myButtons[i]);
            }
        }

        public void Display(int i)
        {
            MessageBox.Show("Button No " + i);
        }

    }
}
命名空间窗口窗体应用程序1
{
公共部分类Form1:Form
{
公共表格1()
{
初始化组件();
}
按钮[]myButtons=新按钮[10];
私有void Form1\u加载(对象发送方、事件参数e)
{
对于(int i=0;i此。显示(索引+1);
this.Controls.Add(myButtons[i]);
}
}
公共空白显示(int i)
{
MessageBox.Show(“按钮编号”+i);
}
}
}

谢谢。我只是想知道,最后一排是什么?我知道它在做什么,只是想知道它是如何调用的,这样我就可以了解它了;这个特殊的语法叫做lambda表达式。谢谢。我只是想知道,最后一行是什么?我知道它在做什么,只是想知道它是如何调用的,这样我就可以了解它了;此特定语法称为lambda表达式。这不会编译<代码>显示的语法不正确,您正在为循环调用
中的方法,而不是从该方法创建委托。如何向按钮添加图像此方法对我有效,我现在正在尝试添加无法编译的图像<代码>显示
语法不正确,您正在为循环调用
中的方法,而不是从中创建代理。如何向按钮添加图像此方法对我有效,我现在正在尝试添加图像