如何确定我的 winform 在哪个监视器中?
Posted
技术标签:
【中文标题】如何确定我的 winform 在哪个监视器中?【英文标题】:How do I determine which monitor my winform is in? 【发布时间】:2010-09-24 23:55:41 【问题描述】:我一直在这个网站上下,发现了很多关于 Screen 类的信息,以及如何计算监视器的数量等等,但是我如何确定表单当前处于哪个监视器?
【问题讨论】:
【参考方案1】:比使用边界更简单的方法是使用 Screen.FromControl() 方法。这与 Windows 使用的功能相同。
Screen.FromControl(this)
将为包含您调用它的大部分表单的屏幕返回屏幕对象。
【讨论】:
【参考方案2】:这应该对你有用:
private Screen FindCurrentMonitor(Form form)
return Windows.Forms.Screen.FromRectangle(new Rectangle( _
form.Location, form.Size));
它将返回包含大部分表单的屏幕。 Alternativley,你可以使用
return Windows.Forms.Screen.FromPoint(Form.Location);
返回包含表单左上角的屏幕。
【讨论】:
【参考方案3】:我确实注意到了这一点,但我希望有更优雅的东西(来自 .net 而不是来自你。) 因此,根据您的建议,我这样做了:
foreach (Screen screen in System.Windows.Forms.Screen.AllScreens)
if (screen.Bounds.Contains(this.Location))
this.textBox1.Text = screen.DeviceName;
【讨论】:
【参考方案4】:每个 Screen 对象都有一个 Bounds 属性,您可以使用该属性来查找屏幕占据的坐标,只需检查表单的位置即可。
【讨论】:
以上是关于如何确定我的 winform 在哪个监视器中?的主要内容,如果未能解决你的问题,请参考以下文章
您如何决定在 SQL Server 活动监视器中终止哪个进程?