![](/img/trans.png)
[英]How do I get the position of a form and the screen it is displayed on, and restore that the next time my form is displayed?
[英]How can I tell if my form is displayed beyond the screen?
因此,我有两种形式,即主形式和特形式。
设置mainform初始化时,extraform始终移动到mainform的右侧
有时mainform占用了两个监视器,而Extraform则被推离屏幕,再也看不到了。 我想尽可能避免这种情况。 我该怎么办? 它必须支持双显示器,它们之间可能有也可能没有距离(即屏幕1在屏幕2的左侧20px)。
我怎样才能做到这一点?
您可以使用Screen类来计算窗口相对于桌面的位置。 Screen类具有FromRectangle方法,因此您可以弄清楚应该在哪个屏幕上放置Form(通过传入表单的Bounds属性)。
每个Screen对象都有一个Bounds属性,可以将其与窗口的位置和大小进行比较,并进行相应的调整。
这取决于将多余的格式推到屏幕边界之外时应该发生的情况。
但是,要确定是否已将其推下,使用System.Windows.Forms.Screens类非常简单。 然后,您可以像这样进行边界检查:
foreach (var screen in Screen.AllScreens)
{
if(screen.Bounds.Contains(this.Bounds))
{
Console.WriteLine("Device "+screen.DeviceName+" contains form!");
}
}
代码假定采用某种形式。 请注意,如果表单完全包含在屏幕上,则此代码仅打印该屏幕包含该表单。 但是,这应该很容易解决,具体取决于您的需求。
表单中的DesktopLocation属性也许可以为您提供有关它们发生的情况的线索
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.