winForm在多显示器(主显示器 + 扩展显示器)上显示最大化和还原操作。

一、问题描述:
客户笔记本电脑连接了一个显示器,将其设置成了“扩展这些显示器”,将winForm窗体从主显示器拖到扩展显示器上,点击放大和还原的时候,界面的大小和位置不正确
显示器设置
解决方案如下:
1,this.FormBorderStyle != System.Windows.Forms.FormBorderStyle.None的情况,将窗体最大化和还原操作:
这种情况下,winForm窗体时在当前显示器的工作区域内,是不会覆盖任务栏,同时位置和大小都是理性状态的。也就不说了

2,this.FormBorderStyle != System.Windows.Forms.FormBorderStyle.None的情况,利用From的属性WindowsState属性控制窗体最大化和还原,将窗体最大化和还原操作:
界面如下:
在这里插入图片描述
对应图形的代码
不管是在主显示器上最大化还是在扩展显示器上最大化,都会遮挡任务栏(连腾讯qq都截不了屏,就不附图了)
除了遮挡了任务栏外,其他效果都还是可以的,但是客户要求不可以占用任务栏

3,重新指定界面属性获取和设置窗体最大化后的大小MaximizedBounds为当前显示器的工作区域的大小
这样的话,在主显示器上的显示大小都是正确的,但是移动到扩展显示器上后,就会出现问题了,这时候的location和size还不是我想要的效果。下面的图就是我在扩展显示器上的最大化效果
在这里插入图片描述

4,重新指定winForm的Location和Size和MaximizedBounds三个属性
在这里插入图片描述
执行this.WindowState = FormWindowState.Normal后Location的各项值都为0,也就是说在扩展屏幕上还原的时候,是还原到主显示器上的左上角上了,会出闪屏的效果。还是有问题,位置还是不正确

5,放弃用微软内部提供的方法,实在是没招了
不管怎么搞,都是在改变winForm的Location和Size和MaximizedBounds属性值,进行界面的绘制。那就自己写呗,放大缩小的时候自行指定窗体要在当前显示器上显示的位置和大小。
在这里插入图片描述
这样可以自己指定要显示的位置和窗体的大小,完美的绕开了微软内部是怎么实现的,避开闪屏等一些问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值