winfrom如何用数组或者查找的方式来实现按钮和指示灯的一一对应

点击第一个按钮第一个灯亮,点击第二个按钮第二个灯亮,第一个灯灭,类似这样的操作。按钮用的是radiobutton。想知道代码该如何编写。

img

在WinForms中,你可以通过在事件处理器中跟踪哪个按钮被点击来实现这个功能。以下是一个简单的例子,假设你有一个数组,其中包含与按钮对应的指示灯的引用。

首先,假设你有一个RadioButton[]数组,其中包含所有按钮的引用,以及一个Light[]数组,其中包含所有灯的引用。

RadioButton[] buttons = new RadioButton[] { button1, button2, button3 };
Light[] lights = new Light[] { light1, light2, light3 };
int selectedButtonIndex = 0;

然后,你可以为每个按钮的Click事件添加一个处理器:

foreach (RadioButton button in buttons)
{
    button.Click += Button_Click;
}

在处理器中,你可以根据当前选中的按钮来开/关相应的灯:

void Button_Click(object sender, EventArgs e)
{
    if (((RadioButton)sender).Checked)
    {
        // 找到当前选中的按钮的索引
        int index = Array.IndexOf(buttons, sender as RadioButton);
        // 关闭所有灯
        foreach (Light light in lights)
        {
            light.Off();
        }
        // 打开当前选中的按钮对应的灯
        lights[index].On();
    }
}

这个例子假设你的Light类有On()和Off()方法,分别用于打开和关闭灯。你可能需要根据你的具体实现进行调整。

不查,直接配置。不想写配置,一对一的情况下,偷懒得话,你可以把按钮的Tag设置成“灯”的object

其他方式我就不说了,刚开始就这样把。如果在说DataSource bind,啥字节位这种就糊了(虽然这种玩意,C++下位机的人最有可能给你的,就是字节位,但是等你碰到了在说)