0

我正在尝试编写一个需要找到鼠标单击的 X 和 Y 的程序,所以我编写了这个小调试代码

Private Sub PictureBox1_MouseClick(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseClick

  Console.WriteLine(ToString(e.X) + "," + ToString(e.Y))

End Sub

当我运行它时,我收到错误,An unhandled exception of type 'System.IndexOutOfRangeException' occurred in WindowsApplication1.exe我看不出我的代码有什么问题。

4

2 回答 2

2

很好的 VB.NET 陷阱,由 () 引起的含义很多。在这种情况下,它是一个索引表达式。您实际上是在调用表单的 ToString() 方法,即 Me.ToString() 并返回一个类似“WindowsApplication1.Form1”的字符串。在字符串上使用(x)是有效的语法,它返回位置 x 处的字符。当您将鼠标保持在最左上角时工作,您会得到类似W,W的东西:) 但是移动鼠标,它会变成 Kaboom!当您索引字符串中超出字符串长度的位置时。

修复:

 Console.WriteLine(e.X.ToString() + "," + e.Y.ToString())

或者:

 Console.WriteLine("{0},{1}", e.X, e.Y)

或者:

 Console.WriteLine(e.Location)

或更理智:

 Label1.Text = e.Location.ToString()
于 2013-07-02T09:15:40.963 回答
0

可以编译吗?换行

Console.WriteLine(ToString(e.X) + "," + ToString(e.Y))

Console.WriteLine(e.X.ToString() + "," + e.Y.ToString())
于 2013-07-02T07:15:34.733 回答