以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [分享]关于无边框窗口的操作  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=112864)

--  作者:wh123
--  发布时间:2018/1/4 11:57:00
--  [分享]关于无边框窗口的操作
       之前在论坛查询无边框,不显示控制框的的窗口操作(主要是移动问题)时

发现论坛中关于这方面的内容案例都不是开发板的程序,无法查看。于是自己研究

了一下,现在把自己的成果心得分享给大家。
移动:
    首先要将窗口显示控制框属性设置为FALSE,然后增加两个texbox控件用于存

储按下鼠标左键后的坐标。需要注意的是,要想移动窗口,鼠标按下的位置一定要

有控件,不能是空白,不明白为什么。所以根据实际情况可以使用一个面板(若需

要点击窗口任意位置移动窗口,可以将面板的停靠属性设置为fill,也可以放在

特定位置)来让我们移动窗口。
在窗口的afterload事件中取消边框:
e.Form.BaseForm.FormBorderStyle = Windows.Forms.FormBorderStyle.None

在MouseDown事件中获取鼠标位置:
If e.Button = MouseButtons.Left Then
    e.Form.Controls("x").value = e.X
    e.Form.Controls("y").value = e.Y
End If

在MouseMove事件中计算鼠标相对移动的位置然后调整窗口
If e.Button = MouseButtons.Left Then
    Dim sx As Integer = e.Form.Controls("x").value
    Dim sy As Integer = e.Form.Controls("y").value
    e.Form.baseform.left = e.Form.baseform.left + e.X - sx
    e.Form.baseform.top = e.Form.baseform.Top + e.y - sy
End If

最大化
e.Form.BaseForm.WindowState = 2

最小化
e.Form.BaseForm.WindowState = 1

还原
e.Form.BaseForm.WindowState = 0

通过以上知识就可以对窗口做一些个性话的设计,设计出更加美观,灵活的窗口,
并且代码也不复杂。


--  作者:wh123
--  发布时间:2018/1/4 12:01:00
--  
自己顶,狐狸爸爸求加精
--  作者:有点甜
--  发布时间:2018/1/4 12:19:00
--  
以下是引用wh123在2018/1/4 11:57:00的发言:

 
【发现论坛中关于这方面的内容案例都不是开发板的程序,无法查看】

 

如果你有开发版加密狗,你可以安装一个商业版,然后直接打开使用的。


--  作者:wh123
--  发布时间:2018/1/4 12:34:00
--  
还有这种操作,居然不知道
--  作者:良才
--  发布时间:2018/10/29 15:01:00
--  

学习