我有一个颜色选择器,我在MouseMove
而不是Click
事件的图片上使用,以便允许颜色“在运行中”显示,但是当我离开边界时图像,我收到错误,无法想到处理它的最佳方法。
Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove
If isWithin(DirectCast(sender, PictureBox), New Point(e.X, e.Y)) And e.Button = Windows.Forms.MouseButtons.Left Then
Dim bmptmp As New Bitmap(Me.PictureBox1.Image, Me.PictureBox1.Width, Me.PictureBox1.Height)
Dim clrtmp As Color = bmptmp.GetPixel(e.X, e.Y) '<--- error here
...
...
End If
End Sub
我编写了isWithin
函数并将其添加到上面If
作为一种可能的检查方式,但这似乎不起作用:
Public Function isWithin(pic As PictureBox, pnt As Point)
Dim rct1 As New Rectangle(pic.Top, pic.Left, pic.Width, pic.Height)
Dim rct2 As New Rectangle(pnt.X - 1, pnt.Y - 1, 1, 1)
Return rct1.IntersectsWith(rct2)
End Function
我收到的错误是
An unhandled exception of type 'System.ArgumentOutOfRangeException' occurred in System.Drawing.dll - Additional information: Parameter must be positive and < Height
(如果我走得太远,则为< Width
)。我认为这是因为e.X
或e.Y
不再大于0或小于高度或宽度(这是我尝试使用isWithin
函数检查的)< / p>
答案 0 :(得分:0)
当我输入问题时想出来,但我想仍然会添加它。将其封装在Try... Catch ex as Exception... End Try
中,然后就可以了。没有必要真正处理错误,因为它是一个预期的错误,只是我邋and并从VBA思想列车来到它(“做......或者不做。没有尝试。” - Yoda&amp; VBA)