C#WPF的多屏显示问题(完善版)

本文详细讨论了C# WPF应用在多屏显示时遇到的问题,包括窗口位置不正确、显示器序号对应混乱以及窗口跨屏显示等。通过分析问题原因,提出了解决方案,包括正确设置显示器布局、在窗口加载后最大化、使用Bounds获取屏幕显示范围等关键步骤,以确保窗口能按预期在各显示器上正确显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前就做过这个多屏显示的问题,但是这几天在现场的时候还是会出现问题。 

出现的问题主要是:

一、窗口不用对应的显示在所希望的显示器上。比如希望1,2,3显示器分别显示窗口1,2,3.但实际上1,2窗口显示在1显示器上,2窗口显示在2显示上,而三显示器上并没有显示。

二、并不能按照顺序对应显示,会造成显示器序号和窗口序号不对应。

三、窗口的区域不对。有时候一个窗口会跨2个显示器显示,一个显示器中并不能完全显示整个窗口

之后再进行了一些资料的查阅和修改。 

产生这些问题的原因。

1.WindowState的最大化不对,如果在窗口加载之前就把窗口最大化之后,则窗口也不能正确的显示到所希望的显示器。只能显示到主窗口

2.显示区域的范围选择不对。

对整个程序进行了一下的修改。并且进行一些显示器设置操作

首先如果需要用到Screen,这个类型就必须包含:

using System.Windows.Forms;这个语句,如果不成功请查阅相关的资料。

1.显示器设置操作:

这里用displayfusion对四个显示进行了设置,设置主显示器为第一个显示器,坐标从0,0开始,其他显示器一次紧贴紧跟在第一个显示器之后,并且把所有的显示Y坐标都定义为0;

读取显示列表后要根据X坐标的大小进行排序,使第一个显示器为主显示器。

            List<System.Windows.Forms.Screen> screens = System.Windows.Forms.Screen.AllScreens.ToList();
            screens.Sort((x, y) &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值