 |
绝大多数VB控件都支持拖放。可以将控件的DragMode设置为手动(默认),使用Drag方法开始拖动操作。例子:
Dim oldX As Single, oldY As Single
Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
Source.Move Left + X - oldX, Top + Y - oldY
End Sub
Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
oldX = X + Left
oldY = Y + Top
Label1.Drag 1
End Sub
Private Sub Label1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.Drag 2
End Sub
NewViewStudio的意见:
我有个更好的方法,它不仅可以拖动窗体内的控件,还可以拖动窗体本身,尤其是对BorderStyle=0的窗体非常奏效.
Public Declare Function ReleaseCapture Lib "user32" () As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Sub MoveObject(ByVal hWndOfObject As Long)
ReleaseCapture
SendMessage hWndOfObject, &HA1, 2, 0
End Sub
hWndOfObject 只要给窗体或其它控件的hWnd属性即可。如果没有hWnd的,则需要你自己去弄了,可以利用API来实现。
相关问题:
QA001292 "怎样使窗体移动时,窗体都以显示内容的方式来显示"
QA002807 "如何在同一个工程中进行拖放操作"
QA002099 "从网页上拖URL到程序中是怎么实现的"
QA001575 "如何接受从其它程序中拖来的文字"
QA000091 "如何实现浮动没有标题的窗体"
2216
此问题由李海回答。
附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 键盘与鼠标, mouse, keyboard, hid。
|