C# 单击按钮数组的事件
我在C#WFA中有一个按钮数组,我想为单击数组中的任何按钮创建一个事件。 我怎么做? 如何知道它在阵列中的哪个位置?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.
我知道发送方是按钮本身您可以将事件处理程序添加到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表达式。这不会编译<代码>显示的语法不正确,您正在为循环调用中的方法,而不是从该方法创建委托。如何向按钮添加图像此方法对我有效,我现在正在尝试添加无法编译的图像<代码>显示
语法不正确,您正在为循环调用中的方法,而不是从中创建代理。如何向按钮添加图像此方法对我有效,我现在正在尝试添加图像