使用键盘箭头键而不是鼠标移动(拖放)对象

时间:2015-01-05 21:30:47

标签: vb.net c#-4.0 drag-and-drop keyboard arrow-keys

我有第三方图片控件,我可以在其中绘制形状。通过代码,我从磁盘上加载一张图片并在图片上画一个小方块。默认情况下,我可以使用鼠标拖动图片周围的这个方块。但是,有时放置方块需要精确,鼠标很难。我想使用键盘箭头键(或NumLock关闭时的数字小键盘箭头键)来拖动方块(可能是输入或空格以放下它)。

我还没有找到这个对象的“拖动”方法,这些方法可以让我将它置于“拖动”模式。所以,我想知道一旦选择了正方形(点击)我是否可以通过代码模拟鼠标。

到目前为止,我所做的只是简单地覆盖了ProcessCmdKey函数来捕获数字小键盘的箭头键,这样我就可以移动鼠标了。我需要做的是同时模拟鼠标,我不知道该怎么做?也许计时器发送mousedown然后阅读这些?任何帮助和示例将不胜感激。

Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean
    Dim bHandled As Boolean = False

    Select Case keyData
        Case Keys.Up
            If (Control.IsKeyLocked(Keys.NumLock) = False) Then
                Cursor.Position = New Point(Cursor.Position.X, Cursor.Position.Y - 1)
            End If
            bHandled = True
        Case Keys.Down
            If (Control.IsKeyLocked(Keys.NumLock) = False) Then
                Cursor.Position = New Point(Cursor.Position.X, Cursor.Position.Y + 1)
            End If
            bHandled = True
        Case Keys.Right
            If (Control.IsKeyLocked(Keys.NumLock) = False) Then
                Cursor.Position = New Point(Cursor.Position.X + 1, Cursor.Position.Y)
            End If
            bHandled = True
        Case Keys.Left
            If (Control.IsKeyLocked(Keys.NumLock) = False) Then
                Cursor.Position = New Point(Cursor.Position.X - 1, Cursor.Position.Y)
            End If
            bHandled = True
    End Select

    Return bHandled
End Function

0 个答案:

没有答案