所以我有两种形式,MainForm,然后extraform。结果 extraform设置总是转移到MainForm的右侧时的MainForm初始化结果 有时候MainForm中占据了两个监视器和extraform推离屏幕永远不会再看到。我想如果可能的话,以防止这一点。我该怎么办呢?它必须支持双屏,其可以或可以不具有它们(即屏幕1 20像素到屏幕2的左侧)。

之间的距离

我怎样才能做到这一点?

有帮助吗?

解决方案

您可以使用Screen类的工作在哪里你的窗口是相对于桌面。 Screen类有FromRectangle方法,这样你就可以找出哪个屏幕应该(通过传递表单的边界财产)来定位你的表格。

每个屏幕对象具有Bounds属性,这可用于比较你窗口的位置和尺寸,并相应地调整它们。

其他提示

这取决于你想应该发生时extraform推超出屏幕(S)的范围是什么。

不过,找出是否它被推离,它使用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归因
不隶属于 StackOverflow
scroll top