Vb.net 右键单击1按钮在两个图像之间切换

Vb.net 右键单击1按钮在两个图像之间切换,vb.net,Vb.net,我的资源中有两张图片(cat.png和dog.png)。 我想知道当我右键点击按钮时,如何在两个图像之间更改按钮的背景图像。以下是一个例子: 当我右键单击按钮时,按钮的图像是cat,当我再次右键单击时,它将变为dog 以下是我的代码,它不起作用: Private Sub btn1_MouseDown(sender As Object, e As MouseEventArgs) Handles btn1.MouseDown If (e.Button = Windows.Forms.Mous

我的资源中有两张图片(cat.pngdog.png)。 我想知道当我右键点击按钮时,如何在两个图像之间更改按钮的背景图像。以下是一个例子:

当我右键单击按钮时,按钮的图像是cat,当我再次右键单击时,它将变为dog

以下是我的代码,它不起作用:

Private Sub btn1_MouseDown(sender As Object, e As MouseEventArgs) Handles btn1.MouseDown
    If (e.Button = Windows.Forms.MouseButtons.Right) Then
        btn1.BackgroundImage = My.Resources.cat
        btn1.BackgroundImageLayout = ImageLayout.Stretch
    End If
    If ((e.Button = Windows.Forms.MouseButtons.Right) And (Not btn1.BackgroundImage Is Nothing)) Then
        btn1.BackgroundImage = My.Resources.dog
        btn1.BackgroundImageLayout = ImageLayout.Stretch
    End If
End Sub
猫正在显示,但当我再次右键单击时,什么也没有发生

(对不起,我的英语不好:p)
谢谢

您应该知道如何清楚地编写逻辑。在这里,我认为无需编写第二条if语句

因此,下面的检查足以确定是否显示cat,然后显示dog,否则显示cat

If (e.Button = Windows.Forms.MouseButtons.Right) Then
        If((btn1.BackgroundImage = My.Resources.cat) Or (btn1.BackgroundImage IsNot Nothing))  Then  'check for cat or no image
        btn1.BackgroundImage = My.Resources.dog        ' set dog
        Else
        btn1.BackgroundImage = My.Resources.cat        'set cat
        End If
        btn1.BackgroundImageLayout = ImageLayout.Stretch       'in any case only stretch once
End If
此外,我想说的是,要更改如下所示的“非零”检查:

btn1.BackgroundImage IsNot Nothing

希望这能起作用。

您需要一个表单级布尔变量(
CatShowing
?)。执行第一个块时,测试CatShowing是否为真。如果是,则显示狗并将CatShowing设置为false。下次,由于CatShowing为false,您将显示cat并将CatShowing设置为true。感谢您的帮助,但它在@Biller处检测到错误。您需要在那里编写实际语法。我已在中编写了一个伪代码。现在更新。