以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 怎样移动窗口中的panel (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=166164) |
-- 作者:百事可乐 -- 发布时间:2021/5/21 12:28:00 -- 怎样移动窗口中的panel 如题,在一个窗口中,因为有个panel要显示详情数据和图表,当点击显示时它可以显示出来,但位置无法移动,挡住后方内容。是否可以象其它软件一样,可以按住panel后可以移动它? 注:这里最好是不要用模式窗口来显示详情,因为数据比较多,一些变量和表都存在于当前窗口中,如果用到模式窗口,就相当于要重新生成那些table了,这样重复的操作就太多了。
|
-- 作者:有点蓝 -- 发布时间:2021/5/21 13:32:00 -- 参考:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=49697&skin=0 |
-- 作者:百事可乐 -- 发布时间:2021/5/21 13:38:00 -- 已解决。参考 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=82977&replyID=&skin=1 ===================== 1、设置二个全局变量用于记录 该控件按下时的左上角坐标 Vars("CtrlX") Vars("CtrlY") 2、在窗口mouseDown事件中记录下按下时的控件坐标: If e.Button = MouseButtons.Left Then If e.Sender.Name.StartsWith("Panel") Then Vars("CtrlX") = e.X Vars("CtrlY") = e.Y end if end if 3、在窗口mouseMove事件中实现对这个控件的移动 If e.Button = MouseButtons.Left Then If e.Sender.Name.StartsWith("Panel") Then e.Sender.Left += e.x - Vars("CtrlX") e.Sender.top += e.y - Vars("CtrlY") end if end if 4、如果移动后的控件要显示在最上层,在mouseDown事件中再添加以下代码 Dim pn As WinForm.Panel pn = e.Form.Controls(e.sender.Name) pn.TopMost = True 5、注意:其中引用的控件"Panel",是大小写敏感的,所以必须用大写的"P",我之前使用了"panel"无论如何都实现不了移动。 ================ 感谢前人的付出,所以我乐意再次小结如上,给各位需要的朋友。 [此贴子已经被作者于2021/5/21 13:40:31编辑过]
|