如何实现图形3-Way" Switch"

时间:2016-02-06 22:18:53

标签: c# winforms button switch-statement toggle

我正在尝试建立一个3路" Switch"在我的WinForms项目中。

它只为所有三个"设置"发送一个命令,但每次用户点击按钮时,应在3个不同的背景图像之间交替。我已经使用>>> for row in s.split('#'): ... k, v = row.split(':', 1) ... print(k.strip(), '=', v.strip()) ... Server = x.x.x U = 100 P = 100 Pre = 00 Tel = xxxxxx 将其外观设置为" Button"已经在我的项目中实现了双向切换开关,但我不相信这种方法适用于3路开关。

以下是我尝试过的代码,但单击按钮时似乎没有做任何事情:

CheckBox

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

    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; } } case 1后点击按钮后恢复为switch_state

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

1 个答案:

答案 0 :(得分:1)

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

if(switch_state > 3)
    switch_state = 1;

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