以文本方式查看主题 - 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)
在窗口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
|
||||
-- 作者: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设置窗口大小、根据类别设置显示内容等
|
||||
-- 作者:有点甜 -- 发布时间:2017/9/11 17:31:00 -- 你把你的分辨率调成不同的测试一下效果,不就知道了?
出错后再调整。 |