Vb.net 将鼠标单击X和Y写入控制台

Vb.net 将鼠标单击X和Y写入控制台,vb.net,click,mouse,Vb.net,Click,Mouse,我试图写一个程序,需要找到鼠标点击的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 当我运行它时,我得到一个错误WindowsApplication1.exe中发生了一

我试图写一个程序,需要找到鼠标点击的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
当我运行它时,我得到一个错误
WindowsApplication1.exe中发生了一个类型为“System.IndexOutOfRangeException”的未处理异常
我不知道我的代码是怎么错的。

它编译了吗? 换线

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


很好的VB.NET陷阱,由()引起,意味着很多东西。在本例中,它是一个索引表达式。实际上,您正在调用表单的ToString()方法,即Me.ToString(),该方法返回类似“WindowsApplication1.Form1”的字符串。对字符串使用
(x)
是有效的语法,它将返回位置x处的字符。当你把鼠标放在最左上角时,你会得到类似于
W,W
:)的东西,但是移动鼠标,它就会发出咔嗒声!索引字符串中超出字符串长度的位置时

修复为:

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

或:

或者更理智:

 Label1.Text = e.Location.ToString()

它以前编译过,但在尝试运行时抛出了该错误。现在可以了。我看不出第一行和第二行代码之间有什么区别,它们不应该做完全相同的事情吗?@RX14根据文档,Convert.ToString()和Object.ToString()都做同样的事情。
 Console.WriteLine("{0},{1}", e.X, e.Y)
 Console.WriteLine(e.Location)
 Label1.Text = e.Location.ToString()