如何实现图形化的 3 路“切换”

本文关键字:切换 图形 何实现 实现 | 更新日期: 2023-09-27 18:33:34

我正在尝试在我的WinForms项目中构建一个3路"开关"。

它只为所有三个"设置"发送一个命令,但每次用户单击按钮时,应该在 3 个不同的背景图像之间交替。我已经通过使用外观设置为"按钮"的CheckBox在我的项目中实现了 2 路切换开关,但我相信这种方法不适用于 3 路开关。

这是我尝试过的代码,但是单击按钮时似乎没有任何作用:

    private void ThreeWayButton_Click(object sender, EventArgs e)
    {
        if (ThreeWayButton.BackgroundImage.Equals(Properties.Resources.ThreeWay_1))
        {
            ThreeWayButton.BackgroundImage = Properties.Resources.ThreeWay_2;
        }
        else if (ThreeWayButton.BackgroundImage.Equals(Properties.Resources.ThreeWay_2))
        {
            ThreeWayButton.BackgroundImage = Properties.Resources.ThreeWay_3;
        }
        else if (ThreeWayButton.BackgroundImage.Equals(Properties.Resources.ThreeWay_3))
        {
            ThreeWayButton.BackgroundImage = Properties.Resources.ThreeWay_1;
        }
    }

我尝试的另一种方法是使用开关:

static int switch_state = 0;
//...
    protected void ThreeWayButton_Click(object sender, EventArgs e)
    {
        switch_state++;
        switch (switch_state)
        {
            case 1:
                ThreeWayButton.BackgroundImage = Properties.Resources.ThreeWay_2;
                break;
            case 2:
                ThreeWayButton.BackgroundImage = Properties.Resources.ThreeWay_3;
                break;
            case 3:
                ThreeWayButton.BackgroundImage = Properties.Resources.ThreeWay_1;
                break;
            default:
                break;
        }
    }

这种方法有点工作;它循环浏览三个图像,但是一旦到达最后一个图像,它就不会再次循环浏览图像。

如果第二种方法是合适的方法,我希望它在用户switch_state case 3时单击按钮后

恢复为case 1

每次用户单击按钮时,它都应该在三个图像之间循环,无论单击按钮多少次。

如何实现图形化的 3 路“切换”

您的第二种方法是好的,您只需要添加:

if(switch_state > 3)
    switch_state = 1;

就在switch_state++之后,否则它将继续递增,从而什么都不做。