繁体   English   中英

如何判断我的表格是否显示在屏幕之外?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM