投稿者 魔界の仮面弁士  (社会人) 投稿日時 2018/10/23 16:11:55
> 現在地がPictureBox1にある場合右クリック押されるとPictureBox2に画像が移動しているようにしています。

なるほど。
一つの画像を、どの PictureBox に表示させるのかを管理しているのですね。
一つの PictureBox 上で画像の描画位置を移動させるのかと思っていました。

だとするとドラッグ操作は向かないですね。


> ''ダブルクリックの無効か
> MyBase.SetStyle(ControlStyles.StandardDoubleClick, False)
これは毎回呼ぶものではありません。コンストラクタに記述してください。
Form のダブルクリックを禁止したいなら、Form のコンストラクタに。
PictureBox のダブルクリックを禁止したいなら、PictureBox のコンストラクタに。


とはいえこれは、DoubleClick イベントを抑制して、2 回目の Click イベントのままに
するだけのものであり、MouseDown に対しては影響が無いはずなんですよね…。

PictureBox を貼っていない下記の実験用フォームを用意して、
連続した MouseDown イベントが、正しく通知されているかを確認してみてください。

'実験コード。Form に ListBox だけを貼っておきます。 
Public Class Form1
    Public Sub New()
        InitializeComponent()

        '下記の行をコメントアウトすると、連続した 2 回目の 
        'Click イベントが、DoubleClick イベントに変更される 
        MyBase.SetStyle(ControlStyles.StandardDoubleClick, False)
    End Sub

    '検証用 
    Private Sub Dump(eventName As String)
        ListBox1.Items.Insert(0, Now.ToString("[HH:mm:ss.ff]") & eventName)
        ListBox1.SelectedIndex = 0
    End Sub

    Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles Me.MouseDown
        Dump("MouseDown/" & e.Button.ToString())
    End Sub
    Private Sub Form1_MouseClick(sender As Object, e As MouseEventArgs) Handles Me.MouseClick
        Dump("MouseClick/" & e.Button.ToString())
    End Sub
    Private Sub Form1_MouseUp(sender As Object, e As MouseEventArgs) Handles Me.MouseUp
        Dump("MouseUp/" & e.Button.ToString())
    End Sub
    Private Sub Form1_Click(sender As Object, e As EventArgs) Handles Me.Click
        Dump("Click/" & MouseButtons.ToString())
    End Sub
    Private Sub Form1_DoubleClick(sender As Object, e As EventArgs) Handles Me.DoubleClick
        Dump("DoubleClick/" & MouseButtons.ToString())
    End Sub
End Class