以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  能将窗口指定到第二屏幕吗  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=106552)

--  作者:lake163
--  发布时间:2017/9/11 14:38:00
--  能将窗口指定到第二屏幕吗
电脑连接两台显示器,1作为主显示器、2作为扩展显示器,在系统中,设计两个窗口A、B,希望A窗口在1显示器上显示,B窗口在2显示器上显示。
请问各位大神,除了人工调整,能否通过代码控制啊?

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

 用代码控制窗口的位置。

 

 获取显示屏信息

 

msgbox(Windows.forms.Screen.AllScreens.length)
For Each s As object In Windows.forms.Screen.AllScreens
    msgbox(s.Bounds.width)
Next

 

 在窗口AfterLoad事件,动态设置其位置,如

 

e.form.baseform.Left = 0

e.form.baseform.Left = 1366


--  作者:lake163
--  发布时间:2017/9/11 15:31:00
--  

是下面的意思吗?

e.form.baseform.Left = 0    ’  是指窗口在第一个屏幕

e.form.baseform.Left = 1366   ‘是指窗口在第二个屏幕


--  作者:有点甜
--  发布时间:2017/9/11 15:32:00
--  
以下是引用lake163在2017/9/11 15:31:00的发言:

是下面的意思吗?

e.form.baseform.Left = 0    ’  是指窗口在第一个屏幕

e.form.baseform.Left = 1366   ‘是指窗口在第二个屏幕

 

差不多的意思,你用代码指定窗口打开的位置。


--  作者:lake163
--  发布时间:2017/9/11 16:34:00
--  
明白了!但发现在窗口属性中如将窗口位置设置为CenterScreen,则AfterLoad事件中的控制则无效。按常规不是AfterLoad事件更优先吗?
--  作者:lake163
--  发布时间:2017/9/11 16:40:00
--  
如何将 e.form.baseform.Left = 1920 中的1920替换成s.Bounds.width啊
[此贴子已经被作者于2017/9/11 16:41:42编辑过]

--  作者:有点甜
--  发布时间:2017/9/11 16:40:00
--  

不能设置成 CenterScreen

 

你如果想居中也是可以的,可以用代码居中,如

 

Dim frm = e.form.baseform
Dim s1 = Windows.forms.Screen.AllScreens(0).Bounds
frm.left = (s1.width-frm.width) / 2
frm.top = (s1.height-frm.height) / 2

 


--  作者:lake163
--  发布时间:2017/9/11 16:42:00
--  
谢谢!
如果在第二屏居中,则是:
Dim frm = e.form.baseform
Dim s1 = Windows.forms.Screen.AllScreens(0).Bounds
Dim s2 = Windows.forms.Screen.AllScreens(1).Bounds

frm.left = S1.width+(s2.width-frm.width) / 2
frm.top = (s2.height-frm.height) / 2
[此贴子已经被作者于2017/9/11 16:46:37编辑过]

--  作者:lake163
--  发布时间:2017/9/11 17:22:00
--  

请版主帮忙看下AfterLoad事件代码是否合理。

功能主要是设置窗口在哪个屏幕显示、根据分辨率和DPI设置窗口大小、根据类别设置显示内容等
 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:窗口afterload事件.zip


--  作者:有点甜
--  发布时间:2017/9/11 17:31:00
--  

 你把你的分辨率调成不同的测试一下效果,不就知道了?

 

 出错后再调整。