如何确定winform所在的监视器?

时间:2008-12-02 18:19:49

标签: c# .net winforms .net-3.5 .net-2.0

我一直在这个网站上下,发现了很多关于Screen类的信息,以及如何计算监视器的数量等,但我如何确定当前一个表单的监视器?

4 个答案:

答案 0 :(得分:15)

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

Screen.FromControl(this)

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

答案 1 :(得分:4)

这应该适合你:

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

它将返回包含大部分表单的屏幕。 Alternativley,你可以使用

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

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

答案 2 :(得分:1)

我确实注意到了,但我希望得到一些更加优雅的东西(来自.net而不是来自你。) 所以根据你的建议我这样做了:

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

答案 3 :(得分:0)

每个Screen对象都有一个Bounds属性,可用于查找屏幕占用的坐标,只需检查表单的位置。