2011-01-12 4 views
4

まず、マウスがある領域にあるかどうかを知りたい。 次に、マウスが左クリックを保持しているかどうかを確認したいと思います。 左ボタンが押されているかどうかを確認したいと思います。マウスの位置を追跡したいと思います。 最後に、左ボタンが離されたことを確認します。VB.NETでマウスのクリックやドラッグイベントを追跡するにはどうすればよいですか?

つまり、要するに、私のフォームでマウスイベントをどこから追跡すればよいですか?

答えて

4

一般に、マウスダウンイベントが発生すると、マウスをキャプチャする必要があります。マウスをキャプチャしたコントロールの領域からマウスが離れる場合でも、マウス移動イベントが発生します。マウス移動イベントでデルタを計算することができます。デルタがシステム定義の「ドラッグ領域」を初めて超えたときにドラッグが行われます。マウスアップイベントが受信されると、ドラッグ操作を停止します。

Windowsフォームでは、ControlクラスのMouseDown、MouseMove、およびMouseUpイベントを確認してください。 MouseEventArgsにはX/Y座標が含まれます。マウスをキャプチャまたは解放するには、キャプチャプロパティをtrueまたはfalseにそれぞれ設定します。マウスをキャプチャしない場合、マウスがコントロールの範囲外に解放された場合、MouseMoveまたはMouseUpイベントは受け取りません。

最後に、ドラッグ操作を開始する前にマウスが移動できる最小距離を決定するには、SystemInformation.DragSizeプロパティを確認します。

これが役に立ちます。

0

これを実行する唯一の方法は、javascriptを使用することです。

この記事ではあなたに説明します。 http://luke.breuer.com/tutorial/javascript-drag-and-drop-tutorial.aspx

+4

許可されていると、OPは彼が使っていることについてはっきりと分かっていたかもしれませんが、私は彼がHTMLでこれをやろうとしているとは思っていません。 – Josh

5

これは、ドラッグを検出または

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 
0

をクリックするための簡単なコードである当然のことながら、これは古いですが、同じことを行うために探している間、私はこの記事に出くわしました。私は実際のドラッグイベントがあるかもしれないと思ったが、私はそう思わない。ここで私はそれをやった。

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(またはあなたが入っているコンテナ)ではなく、ウィンドウ全体に相対的な位置を返します。

関連する問題