C# 在单击时获取用户生成控件列表的索引

C# 在单击时获取用户生成控件列表的索引,c#,winforms,list,button,controls,C#,Winforms,List,Button,Controls,我正在开发一个应用程序,它可以解码来自串行端口的消息,并根据这些消息显示用户按钮。我将它们存储在一个名为“按钮”的列表中。现在,为了演示双向通信,我想根据我在用户控件中定义的“color”属性发送一条消息。因此,如果我点击一个红色按钮,程序就会发出一个“r”,以此类推。我想知道如何获取单击按钮的列表索引,甚至是给定按钮的属性 例如,根据来自串行端口的消息,我的程序在列表中添加了一个按钮。然后我设置它的各种参数,如位置、大小、颜色等。当我单击它时,根据它的颜色,我希望通过串行端口发送相应的字符 我

我正在开发一个应用程序,它可以解码来自串行端口的消息,并根据这些消息显示用户按钮。我将它们存储在一个名为“按钮”的列表中。现在,为了演示双向通信,我想根据我在用户控件中定义的“color”属性发送一条消息。因此,如果我点击一个红色按钮,程序就会发出一个“r”,以此类推。我想知道如何获取单击按钮的列表索引,甚至是给定按钮的属性

例如,根据来自串行端口的消息,我的程序在列表中添加了一个按钮。然后我设置它的各种参数,如位置、大小、颜色等。当我单击它时,根据它的颜色,我希望通过串行端口发送相应的字符

我已经为此定义了一个按钮单击事件处理程序。我计划在事件处理程序中获取按钮的列表索引,我只是不知道如何获取。我试着用事件的发送者,我试着用“this”,我看了所有的地方,但我一点也不知道怎么做

这是我添加按钮的地方:

guiButton newButton = new guiButton();
EventHandler myHandler = new EventHandler(guibutton_click);
newButton.Click += myHandler;
newButton.Location = new System.Drawing.Point(10, 10);
newButton.Size = new System.Drawing.Size(10, 10);
buttons.Add(newButton);
this.Controls.Add(newButton);
这将是一件大事

private void guibutton_click(object sender, EventArgs e)
    {
        //somehow get ID number here (which is an int)
        if (buttons[ID].color == "green") port.WriteLine("g");
        if (buttons[ID].color == "blue") port.WriteLine("b");
        if (buttons[ID].color == "red") port.WriteLine("r");
        if (buttons[ID].color == "yellow") port.WriteLine("y");
    }
仅供参考,以下是我的按钮列表:

List<guiButton> buttons = new List<guiButton>();
列表按钮=新建列表();

编辑:我设法从事件处理程序的sender对象中获取用户按钮的color属性,但我仍然需要按钮的列表索引,因为我想删除按钮并在双击后将其从列表中删除。这可能吗?发送方信息是否也包含此信息?

是否已检查事件处理程序中的发送方参数?它应该包含您单击的“发送”按钮。正如cbale所说,将发件人转换为按钮,然后使用它。如下所示:
var btn=sender as按钮;如果(btn.Text==“green”)…
谢谢,Nino的解决方案用于获取颜色参数(稍微有点变化,它需要是一个“guiButton”,而不仅仅是一个“Button”),但我仍然想知道如果可能的话,如何获取单击按钮的列表索引,因为在双击事件时,我希望它将其删除。