我正在尝试编写一个需要找到鼠标单击的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
我看不出我的代码是错误的。
答案 0 :(得分: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()
答案 1 :(得分:0)
是否编译? 改变行
Console.WriteLine(ToString(e.X) + "," + ToString(e.Y))
要
Console.WriteLine(e.X.ToString() + "," + e.Y.ToString())