m0_59342845 2023-09-05 10:34 采纳率: 81%
浏览 2
已结题

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

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

img

  • 写回答

2条回答 默认 最新

  • qq_37749055 2023-09-05 10:39
    关注

    在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()方法,分别用于打开和关闭灯。你可能需要根据你的具体实现进行调整。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月13日
  • 已采纳回答 9月5日
  • 创建了问题 9月5日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表