我在这个网站上来回搜索过很多与Screen类有关的信息,也了解了如何计算显示器数量等内容。但是,我该如何确定一个窗体当前在哪个显示器中呢?
与其使用边界,更简单的方法是使用Screen.FromControl()方法。这个功能与Windows使用的相同。
Screen.FromControl(this)
将返回包含调用它的表单大部分的屏幕对象。
以下内容可以解决你的问题:
private Screen FindCurrentMonitor(Form form)
{
return Windows.Forms.Screen.FromRectangle(new Rectangle( _
form.Location, form.Size));
}
它将返回大部分表单所在的屏幕。或者,您可以使用
return Windows.Forms.Screen.FromPoint(Form.Location);
返回包含表单左上角的屏幕。
我确实注意到了,但我希望得到更优雅的解决方案(来自 .net 而不是你)。 所以根据你的建议,我做了这个:
foreach (Screen screen in System.Windows.Forms.Screen.AllScreens)
{
if (screen.Bounds.Contains(this.Location))
{
this.textBox1.Text = screen.DeviceName;
}
}