如何确定我的winform窗体在哪个显示器上?

11

我在这个网站上来回搜索过很多与Screen类有关的信息,也了解了如何计算显示器数量等内容。但是,我该如何确定一个窗体当前在哪个显示器中呢?

4个回答

24

与其使用边界,更简单的方法是使用Screen.FromControl()方法。这个功能与Windows使用的相同。

Screen.FromControl(this)

将返回包含调用它的表单大部分的屏幕对象。


4
这应该对你有帮助:

以下内容可以解决你的问题:

private Screen FindCurrentMonitor(Form form) 
{ 
    return Windows.Forms.Screen.FromRectangle(new Rectangle( _
        form.Location, form.Size)); 
} 

它将返回大部分表单所在的屏幕。或者,您可以使用

return Windows.Forms.Screen.FromPoint(Form.Location);

返回包含表单左上角的屏幕。


1

我确实注意到了,但我希望得到更优雅的解决方案(来自 .net 而不是你)。 所以根据你的建议,我做了这个:

    foreach (Screen screen in System.Windows.Forms.Screen.AllScreens)
    {
        if (screen.Bounds.Contains(this.Location))
        {
            this.textBox1.Text = screen.DeviceName;
        }
    }

0
每个屏幕对象都有一个Bounds属性,您可以使用它来查找屏幕占用的坐标,只需检查窗体的位置即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接