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:)しかし、マウスを動かすとカブームになります! 文字列の長さを超える文字列内の位置にインデックスを付ける場合。

次で修正します。

 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 に答える