If PictureBox1.Image = "a.png" Then
PictureBox1.Image = My.Resources.b
Else
PictureBox1.Image = My.Resources.a
End If
它不会起作用。我如何使这个东西工作?它应检查图片框是否显示图片 a ,如果是,则将其显示为图片 b 。
Public Class Form1
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
If PictureBox1.Image Is My.Resources.b Then
PictureBox1.Image = My.Resources.a
PictureBox1.Refresh()
Else
PictureBox1.Image = My.Resources.b
PictureBox1.Refresh()
End If
End Sub
End Class
完整的代码
答案 0 :(得分:1)
Image
是System.Drawing.Image类型的属性,而"a.png"
是一个字符串,因此您无法比较这些内容以查看它们是否相等。
同样Image
是引用类型,因此您必须使用Is
将其与其他引用类型进行比较。
以下可能有效:
If PictureBox1.Image Is My.Resources.a Then
PictureBox1.Image = My.Resources.b
Else
PictureBox1.Image = My.Resources.a
End If
注意:比较图像可能很棘手,因为当您设置Image属性时,它实际上可能会创建原始图像的副本,因此稍后进行比较将不起作用。见How to compare Image objects with C# .NET?
因此,考虑到这一点,使用变量来比较状态会更好,因为这会消耗更少的资源,并且比必须比较图像简单得多。
以下内容适用于您:
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Static showImageA As Boolean
showImageA = Not showImageA
If showImageA Then
PictureBox1.Image = My.Resources.a
Else
PictureBox1.Image = My.Resources.b
End If
End Sub
注意:请确保您具有Option Strict和Option Explicit On,因为您执行此操作时发布的代码无法编译,因此向您指出错误。