VB.Netのお勉強



コントロールをマウスで移動@VB.Net

フォーム上のコントロールをマウスで移動します。
以下では、テキストボックスをマウスで移動させています。

フォームにテキストボックスを配置します。

マウスの移動処理を記述します。
コントロールのMouseDown、MouseMove、MouseUpをHandleします。

MouseDownの時は、マウスが左クリックかを判断し、
クリックされた位置を記録します。

MouseMoveでは、マウス移動時の処理を記述します。
sender(Control)の位置を設定します。
現在のマウスの位置は、e(MouseEventArgs)により取得できます。
位置を設定して、リフレッシュします。

MouseUpでは、マウス移動完了時の処理を記述します。
MouseMove時の処理と同じです。
コントロールの位置を設定し、リフレッシュします。


Public Class Form1

    '移動前の位置
    Dim startX As Integer
    Dim startY As Integer

    Private Sub TextBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseDown

        '左クリックの場合
        If e.Button = MouseButtons.Left Then
            '移動前の位置を記録
            startX = e.X
            startY = e.Y
        End If

    End Sub

    Private Sub TextBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseMove

        '左クリックの場合
        If e.Button = MouseButtons.Left Then

            'コントロール取得
            Dim control As Control = CType(sender, Control)

            'コントロールの位置を設定
            control.Left = control.Left + e.X - startX
            control.Top = control.Top + e.Y - startY

            'リフレッシュ
            Me.Refresh()

        End If
    End Sub

    Private Sub TextBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseUp

        '左クリックの場合
        If e.Button = MouseButtons.Left Then

            'コントロール取得
            Dim control As Control = CType(sender, Control)

            'コントロールの位置を設定
            control.Left = control.Left + e.X - startX
            control.Top = control.Top + e.Y - startY

            'リフレッシュ
            Me.Refresh()
        End If
    End Sub
End Class




Copyright (C) 2008-2011 VB.Netのお勉強. All Rights Reserved.