まず、マウスがある領域にあるかどうかを知りたい。 次に、マウスが左クリックを保持しているかどうかを確認したいと思います。 左ボタンが押されているかどうかを確認したいと思います。マウスの位置を追跡したいと思います。 最後に、左ボタンが離されたことを確認します。VB.NETでマウスのクリックやドラッグイベントを追跡するにはどうすればよいですか?
つまり、要するに、私のフォームでマウスイベントをどこから追跡すればよいですか?
まず、マウスがある領域にあるかどうかを知りたい。 次に、マウスが左クリックを保持しているかどうかを確認したいと思います。 左ボタンが押されているかどうかを確認したいと思います。マウスの位置を追跡したいと思います。 最後に、左ボタンが離されたことを確認します。VB.NETでマウスのクリックやドラッグイベントを追跡するにはどうすればよいですか?
つまり、要するに、私のフォームでマウスイベントをどこから追跡すればよいですか?
一般に、マウスダウンイベントが発生すると、マウスをキャプチャする必要があります。マウスをキャプチャしたコントロールの領域からマウスが離れる場合でも、マウス移動イベントが発生します。マウス移動イベントでデルタを計算することができます。デルタがシステム定義の「ドラッグ領域」を初めて超えたときにドラッグが行われます。マウスアップイベントが受信されると、ドラッグ操作を停止します。
Windowsフォームでは、ControlクラスのMouseDown、MouseMove、およびMouseUpイベントを確認してください。 MouseEventArgsにはX/Y座標が含まれます。マウスをキャプチャまたは解放するには、キャプチャプロパティをtrueまたはfalseにそれぞれ設定します。マウスをキャプチャしない場合、マウスがコントロールの範囲外に解放された場合、MouseMoveまたはMouseUpイベントは受け取りません。
最後に、ドラッグ操作を開始する前にマウスが移動できる最小距離を決定するには、SystemInformation.DragSizeプロパティを確認します。
これが役に立ちます。
これを実行する唯一の方法は、javascriptを使用することです。
この記事ではあなたに説明します。 http://luke.breuer.com/tutorial/javascript-drag-and-drop-tutorial.aspx
これは、ドラッグを検出または
Public IsDragging As Boolean = False, IsClick As Boolean = False
Public StartPoint, FirstPoint, LastPoint As Point
Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picBook.Click
If IsClick = True Then MsgBox("CLick")
End Sub
Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picBook.MouseDown
StartPoint = picBook.PointToScreen(New Point(e.X, e.Y))
FirstPoint = StartPoint
IsDragging = True
End Sub
Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picBook.MouseMove
If IsDragging Then
Dim EndPoint As Point = picBook.PointToScreen(New Point(e.X, e.Y))
IsClick = False
picBook.Left += (EndPoint.X - StartPoint.X)
picBook.Top += (EndPoint.Y - StartPoint.Y)
StartPoint = EndPoint
LastPoint = EndPoint
End If
End Sub
Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picBook.MouseUp
IsDragging = False
If LastPoint = StartPoint Then IsClick = True Else IsClick = False
End Sub
をクリックするための簡単なコードである当然のことながら、これは古いですが、同じことを行うために探している間、私はこの記事に出くわしました。私は実際のドラッグイベントがあるかもしれないと思ったが、私はそう思わない。ここで私はそれをやった。
Private Sub ContainerToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ContainerToolStripMenuItem.Click
Dim pnl As New Panel
pnl.Size = New Size(160, 160)
pnl.BackColor = Color.White
AddHandler pnl.MouseDown, AddressOf Control_DragEnter
AddHandler pnl.MouseUp, AddressOf Control_DragLeave
AddHandler pnl.MouseMove, AddressOf Control_Move
Me.Controls.Add(pnl)
End Sub
Private Sub Control_DragEnter(ByVal sender As Object, ByVal e As EventArgs)
MouseDragging = True
End Sub
Private Sub Control_DragLeave(ByVal sender As Object, ByVal e As EventArgs)
MouseDragging = False
End Sub
Private Sub Control_Move(ByVal sender As Object, ByVal e As EventArgs)
If MouseDragging = True Then
sender.Location = Me.PointToClient(Control.MousePosition)
End If
End Sub
ContainerToolStripMenuItem
はオンザフライパネルを追加し、私のToolStripからです。 MouseDragging
はクラスレベルです。魅力のようにドラッグします。また、Cursor.Position
を使用しないでください。これは、Form(またはあなたが入っているコンテナ)ではなく、ウィンドウ全体に相対的な位置を返します。
許可されていると、OPは彼が使っていることについてはっきりと分かっていたかもしれませんが、私は彼がHTMLでこれをやろうとしているとは思っていません。 – Josh