以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]移动无边框窗口? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=86544) |
||||
-- 作者:poiokm26 -- 发布时间:2016/6/20 12:43:00 -- [求助]移动无边框窗口? 论坛里有例子,不过超出帮助范围的知识,一时半刻理解不全。 改用折中的方法,参考移动控件的例子。 定义全局变量x,y. 鼠标按下事件: If e.Button = MouseButtons.Left Then vars("x") = e.X vars("y") = e.Y End If 鼠标移动事件: If e.Button = MouseButtons.Left Then e.Sender.Left += e.x - vars("x") e.Sender.top += e.y - vars("y") end if 上面的代码用在窗口中的控件是没有问题的。 但是用在无边框的独立窗口。 panel鼠标按下事件 If e.Button = MouseButtons.Left Then vars("x") = e.X+ e.Form.BaseForm.left vars("y") = e.Y+e.Form.BaseForm.Top End If 移动事件: If e.Button = MouseButtons.Left Then e.Form.BaseForm.left =e.Form.BaseForm.left+(e.x+e.Form.BaseForm.left )- vars("x") e.Form.BaseForm.Top= e.Form.BaseForm.Top+(e.y+e.Form.BaseForm.Top )- vars("y") End If 效果倒是出来了。但是轻轻拉一下,窗口飞到不知那去了。 这原理是一样的,怎么效果就差别这么大呢。 (对不起,搞定了。。直接删去+e.Form.BaseForm.left) 有点不美观,拖个小尾巴。要怎么解决呢。
[此贴子已经被作者于2016/6/20 14:26:06编辑过]
|
||||
-- 作者:大红袍 -- 发布时间:2016/6/20 20:07:00 -- 拖个小尾巴指什么?做个例子发上来。 |
||||
-- 作者:poiokm26 -- 发布时间:2016/6/20 20:47:00 -- 就是拖动的时候重影。就像window的纸牌游戏,赢了就有一排重复的图标。
附件是论坛下载的例子,窗口2 才是我自己做的。
编程学到关于DLL学不下去啊。。
|
||||
-- 作者:大红袍 -- 发布时间:2016/6/20 20:52:00 -- 测试没问题啊,什么重影。 |
||||
-- 作者:poiokm26 -- 发布时间:2016/6/20 21:01:00 -- 窗口2 才是我做的 ![]() ![]() |
||||
-- 作者:大红袍 -- 发布时间:2016/6/20 21:07:00 -- 窗口1有没有问题?我两个测试,都没问题啊。 |
||||
-- 作者:poiokm26 -- 发布时间:2016/6/20 21:12:00 -- 窗口1是论坛下载原样,没有问题。
窗口2自己做的,拖快一点就会有这样的情况 |
||||
-- 作者:大红袍 -- 发布时间:2016/6/20 21:43:00 -- 要像窗口1那样处理一下。照抄就好。有什么问题? |