DOBON.NET DOBON.NETプログラミング掲示板過去ログ

マウスクリックなのにMouseMoveイベントが発生してしまう

環境/言語:[Windows7 V.NET VS2012 .NET Framework(ver 4.5.50709)]
分類:[.NET]

MouseMoveイベントの質問です。
クライアント領域内でマウスの左ボタンをドラッグしている時だけ
特定の処理をするようなプログラムを作成しているのですが、
ウィンドウタイトルバー上で右クリックしてメニュー(ウィンドウサイズ変更や移動等の奴です)を表示した状態で
ドラッグ等はせずにクライアント領域内で左クリックすると、
MouseClickではなくMouseMoveイベントが発生してしまい
特定処理を行なってしまいます。
これを防ぐにはどうすればよいでしょうか?
(タイトルバー上で左クリック→クライアント領域で左クリックは問題ありません。)

マウス 右クリックメニュー MouseMove等で検索をかけたのですが
残念ながら対策は見つかりませんでした。


↓テスト用でMouseMoveイベント内に仕掛けた処理です。
If e.Button = MouseButtons.Left Then
Debug.WriteLine("Mouse:" + e.Location.ToString)
End If


よろしくお願いします。
■No31699に返信(ぼんさんさんの記事)


こんな感じでどうでしょう?


    Private prept As Point
    Private menushow As Boolean = False

    Private Sub Form1_MenuStart(sender As Object, e As System.EventArgs) Handles Me.MenuStart
        menushow = True
    End Sub

    Private Sub Form1_MouseMove(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
        If e.Button = MouseButtons.Left AndAlso Not menushow AndAlso prept <> e.Location Then
            Debug.WriteLine("Mouse:" + e.Location.ToString)
        End If
        menushow = False
        prept = e.Location
    End Sub
shu様

頂いたアドバイスによって現象の回避に成功しました。
MenuStartの存在は知らなかったので勉強になりました。

ご指導頂きありがとうございました!
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板