Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何确定winform所在的监视器?_C#_.net_Winforms_.net 3.5_.net 2.0 - Fatal编程技术网

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

C# 如何确定winform所在的监视器?,c#,.net,winforms,.net-3.5,.net-2.0,C#,.net,Winforms,.net 3.5,.net 2.0,我在这个网站上下浏览,发现了很多关于Screen类的信息,以及如何计算监视器的数量等等,但是我如何确定表单当前在哪个监视器中?每个屏幕对象都有一个属性,您可以使用它来查找屏幕占用的坐标,只需检查表单的位置。我确实注意到了这一点,但我希望得到更为简洁的东西(来自.net,而不是您) 根据你的建议,我做了如下工作: foreach (Screen screen in System.Windows.Forms.Screen.AllScreens) { if (scree

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

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

我确实注意到了这一点,但我希望得到更为简洁的东西(来自.net,而不是您) 根据你的建议,我做了如下工作:

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

这将为您带来好处:

private Screen FindCurrentMonitor(Form form) 
{ 
    return Windows.Forms.Screen.FromRectangle(new Rectangle( _
        form.Location, form.Size)); 
} 
它将返回包含大部分表单的屏幕。Alternativley,你可以用

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

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

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

Screen.FromControl(this)
将返回包含从中调用它的大多数窗体的屏幕的屏幕对象