如何确定我的.NET Windows Forms程序运行在哪个监视器上?

如何确定我的.NET Windows Forms程序运行在哪个监视器上?,第1张

概述如何确定我的.NET Windows Forms程序运行在哪个监视器上?

我有一个C#windows应用程序,我想确保将出现在另一台显示器,如果用户将其移动到一个。 我需要保存主表单的大小,位置和窗口状态(我已经处理过),但是我也需要知道用户closures应用程序时显示的是哪个屏幕。

我正在使用Screen类来确定当前屏幕的大小,但是我无法find关于如何确定应用程序在哪个屏幕上运行的任何信息。

编辑:谢谢你的回复,每个人! 我想确定窗口是哪个监视器,所以我可以进行适当的边界检查,以防用户不小心将窗口放在可视区域外面,或者改变屏幕大小,使窗体不再可见。

valIDation是否安装Visual C ++ 2008 SP1可再发行组件包没有在windowsregistry中search?

什么是构buildwindows Phone 7应用程序要连接的服务的最佳可伸缩体系结构?

成为“真正的pipe理员”(windows),并在.NET C#中执行真正的pipe理任务?

OpenCVSharp:无法加载DLL“OpenCvSharpExtern”

System.Diagnostics.Process无法从windows窗体应用程序中的映射驱动器启动文件

.net开源和运行平台select

将C#.Net Framework控制台应用程序的源值提供给控制台命令

T4输出到string

我能否以编程方式启动windows Management Instrumentation服务?

计划的控制台应用程序与windows服务? 什么时候适用每个?

你可以得到一个你使用这个代码的屏幕数组。

Screen[] screens = Screen.AllScreens;

你也可以通过运行这个代码来找出你在哪个屏幕上( 这是你正在使用的窗体)

Screen screen = Screen.FromControl(this); //this is the Form class

总之检查一下Screen类和静态辅助方法,他们可能会帮助你。

MSDN链接 ,没有太多的..我建议在自己的代码搞乱。

如果你还记得窗户的位置和大小,那就够了。 当您将位置设置为之前使用的位置时,如果碰巧位于第二台显示器上,则会返回到此位置。

例如,如果您有两台显示器,两台显示器的尺寸均为1280×1024,并将窗口的左侧位置设置为2000像素,则会显示在第二台显示器上(假设第二台显示器位于第一台显示器的右侧)。

如果您担心在下一次启动应用程序时第二台显示器不在该处,则可以使用此方法确定您的窗口是否与任何屏幕相交:

private bool isWindowVisible(Rectangle rect) { foreach (Screen screen in Screen.AllScreens) { if (screen.Bounds.IntersectsWith(rect)) return true; } return false; }

只要通过你的窗口的所需位置,它会告诉你,如果它会在其中一个屏幕上可见。 请享用!

您可以使用当前屏幕

var s = Screen.FromControl(this);

this是表单(或表单上的任何控件)。 至于如何记住这是有点棘手,但我会去在Screen.AllScreens数组中的索引,或者也许s.Devicename。 无论哪种情况,请在启动时使用设置之前进行检查,以防止使用断开的显示器。

表单的位置将告诉你表单在哪个屏幕上。 我不明白为什么你需要知道它在哪个屏幕上,因为如果你使用你保存的位置恢复它,它应该只是恢复到相同的位置(也许你可以扩大为什么)。

否则,你可以做这样的事情:

Screen[] scr = Screen.AllScreens; scr[i].Bounds.IntersectsWith(form.Bounds);

每个屏幕都有一个返回矩形的Bounds属性。 您可以使用IntersectsWith()函数来确定窗体是否在屏幕中。

此外,他们基本上提供了一个功能,这也是在屏幕类

Screen screen = Screen.FromControl(form);

您可以使用“屏幕”对象:System.windows.Forms.Screen

开始玩这样的事情:

Screen[] screens = Screen.AllScreens; for (int i = 0; i < screens.Length ; i++) { DeBUG.Print(screens[i].Bounds.ToString()); DeBUG.Print(screens[i].Devicename); DeBUG.Print(screens[i].WorkingArea.ToString()); }

它可能会得到你所需要的

总结

以上是内存溢出为你收集整理的如何确定我的.NET Windows Forms程序运行在哪个监视器上?全部内容,希望文章能够帮你解决如何确定我的.NET Windows Forms程序运行在哪个监视器上?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1273099.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存