2

如何检测窗口是否对用户不可见,然后将其移动到可见的位置以允许用户根据自己的喜好调整其大小。

问题:-我有一个程序可以完美地保存表单的位置和大小。不幸的是,许多用户现在拥有多个屏幕显卡,可以在复制和扩展之间切换。

因此,如果用户关闭表单(程序保存在原来的位置)并且用户切换他的系统以说从重复扩展然后打开程序。程序表单现在不可见,因为它已经超出了当前屏幕系统的限制:(用户可以看到它在任务栏上运行。但是单击图标只会短暂闪烁最小化或最大化程序并右键单击只能选择关闭。

我需要捕获用户不可见的陷阱,然后自动调整大小到任何活动窗口。然后,用户可以按照他们认为合适的方式调整大小/移动。

我会欢迎任何想法/指针

4

2 回答 2

5

这个答案是在 MSDN 论坛上为同一个问题提供的——本质上,它是对屏幕边界的快速检查,并检查程序是否在这些边界内。如果没有,它会将其移至0, 0

using System.Windows.Forms; 

class Form1 : Form {
    protected void EnsureVisible() {
        foreach (Screen scrn in Screen.AllScreens) {
        // You may prefer Intersects(), rather than Contains()
            if (scrn.Bounds.Contains(this.Bounds)) {
              return;
            }
        }
        this.Location = new Point( 0, 0 );
    }
} 
于 2012-12-11T15:33:00.200 回答
0

您可以使用AllScreens属性来获取连接到计算机的所有屏幕的列表。使用它,您可以检查每个屏幕的边界框并测试您的窗口是否位于所有屏幕之外。如果是这样,则重新设置位置。

Jared Harley 在我打字的时候打败了我。

于 2012-12-11T15:33:56.523 回答