C# 如何知道单击了按钮数组中的哪个按钮
我有一个按钮数组,它的长度是用户输入的变量。所以我为所有按钮制作了一个eventHandler。但我有一个问题,我需要知道哪个按钮被点击,这样我就可以在eventHandler中做我想做的事情。在我的代码中它更复杂,但我已经总结了它。实际上,我只需要点击按钮的索引C# 如何知道单击了按钮数组中的哪个按钮,c#,arrays,button,C#,Arrays,Button,我有一个按钮数组,它的长度是用户输入的变量。所以我为所有按钮制作了一个eventHandler。但我有一个问题,我需要知道哪个按钮被点击,这样我就可以在eventHandler中做我想做的事情。在我的代码中它更复杂,但我已经总结了它。实际上,我只需要点击按钮的索引 public Button[] btn; public void creatingButtons() { btn = new Button[x]; for(int i=0; i
public Button[] btn;
public void creatingButtons()
{
btn = new Button[x];
for(int i=0; i<btn.Length; i++){
Controls.Add(btn[i]);
btn[i].Click += new EventHandler(btn_Click);
}
}
private void btn_Click(object sender , EventArgs e)
{
int index;
btn[index].Text = "This is clicked button";
}
公共按钮[]btn;
公共无效创建按钮()
{
btn=新按钮[x];
对于(int i=0;i发送方是被单击的对象,因此您可以使用:
private void btn_Click(object sender , EventArgs e)
{
Button clickedBut = sender as Button;
clickedBut.Text = "This is clicked button";
}
通过查看文档(通过谷歌搜索“c#按钮点击”找到第一个结果)
公共按钮[]基站;
公共无效创建按钮(整数计数){
btns=新按钮[计数];
对于(int i=0;i,正如其他答案所指出的,您可以使用sender
但更好的解决方案是为按钮添加不同的单击处理程序。如果单击处理程序需要为每个按钮或按钮组执行不同的操作,那么从技术上讲,它是一个不同的处理程序。在创建按钮的过程中,您知道按钮的用途,您拥有按钮的实例,因此,请在d为其添加适当的处理程序
通过这种方式,您的代码遵循OOP原则,具有良好的关注点分离,而不是事后将一堆临时if语句拼凑在一起。这正是传递给事件处理程序的sender
参数的目的!但是如何添加x个EventHandler呢?我不知道将有多少个按钮可用y数组有,因为my数组的长度取决于用户输入。@dennistalovic 1)它取决于用户输入是什么意思你们到底需要根据按钮做些什么?实际上,我不需要得到我所要求的,我只需要索引。我的应用程序太复杂了,无法解释。基本上,我正在制作一些购物应用程序,所以首先用户需要添加文章,这样他们就可以和我制作的文本框一起存在。然后他可以购买、出售这些文章。他只需要添加点击按钮他想卖哪一篇文章。所以我不知道他会增加多少篇文章,这意味着我不知道我的数组的长度。所以我不能让每个按钮的私有无效,因为我不知道会有多少个按钮。我是业余爱好者,17岁,一年学习编程。btns。当你点击时,长度还没有定义eatebtns
。此外,这是一个在创建后包含空值的数组,您必须创建按钮btns[i]=new Button();
public Button[] btns;
public void createButtons(int count) {
btns = new Button[count];
for (int i=0; i<count; i++) {
btns[i] = new Button()
Controls.Add(btns[i]);
btns[i].Click += new EventHandler(btn_Click);
}
}
private void btn_Click(object sender, EventArgs e) {
Button clickedButton = (Button)sender;
int index = Array.IndexOf(btns, clickedButton);
clickedButton.Text = "...button clicked...";
}