以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于拖动窗口的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=106732)

--  作者:DrSun
--  发布时间:2017/9/14 17:30:00
--  [求助]关于拖动窗口的问题
本人开发中想弄一个点击窗口某个位置(或一个按钮)后拖到,能够拖动窗口的效果(即不通过控制框来拖动窗口),请问各位老师,有什么好的实现方法?
[此贴子已经被作者于2017/9/14 20:12:57编辑过]

--  作者:有点甜
--  发布时间:2017/9/14 19:08:00
--  

 

[此贴子已经被作者于2017/9/14 19:08:56编辑过]

--  作者:有点甜
--  发布时间:2017/9/14 19:12:00
--  

mousedown

 

If e.Button = MouseButtons.Left Then
     vars("x") = e.X+ e.Form.BaseForm.left
     vars("y") = e.Y+e.Form.BaseForm.Top
End If

 

mousemove

 

If e.Button = MouseButtons.Left Then
    e.Form.BaseForm.left += e.x - vars("x")
    e.Form.BaseForm.Top += e.y - vars("y")
End If


--  作者:DrSun
--  发布时间:2017/9/14 20:31:00
--  回复
感谢您给我提供的思路,我调整了一下,效果达到了:

MouseMove:
If e.Sender.Name <> "拖动按钮" Then
    Return
End If

If e.Button = MouseButtons.Left Then
    e.Form.BaseForm.left = e.Form.BaseForm.left + e.X - e.Form.Controls("X").Value
    e.Form.BaseForm.Top = e.Form.BaseForm.Top + e.Y - e.Form.Controls("Y").Value
End If


MouseDown:
If e.Sender.Name <> "拖动按钮" Then
    Return
End If

If e.Button = MouseButtons.Left Then
     e.Form.Controls("X").Value = e.X
     e.Form.Controls("Y").Value = e.Y
End If



[此贴子已经被作者于2017/9/14 20:32:36编辑过]

--  作者:有点甜
--  发布时间:2017/9/14 20:38:00
--  
 你可以直接把代码写到【拖动按钮】控件的事件去。
--  作者:DrSun
--  发布时间:2017/9/14 20:44:00
--  回复
好的,这样更方便了