如何检测窗口是否对用户不可见,然后将其移动到可见的位置,以允许用户根据自己的喜好调整大小。
问题: - 我有一个程序,可以保存表格的位置和大小,这是完美的。 不幸的是,许多用户现在拥有多个屏幕图形卡,可以在重复和扩展之间切换。
因此,如果用户关闭表单(程序保存它的位置)并且用户将系统切换为从重复扩展,则打开程序。 程序表单现在不可见,因为它已超出当前屏幕系统的限制:( 用户可以看到它在任务栏上运行。但是,单击该图标只会给出最小化或最大化程序的简短闪烁,右键单击只有关闭选项。
我需要捕获用户不可见的内容,然后自动调整大小到任何活动窗口。然后,用户可以根据需要调整大小/移动。
我欢迎任何想法/指针
答案 0 :(得分:4)
This answer - 基本上,它是对屏幕边界的快速检查,并检查程序是否在这些范围内。如果没有,则将其移至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 );
}
}
答案 1 :(得分:0)
您可以使用AllScreens属性获取连接到计算机的所有屏幕的列表。使用它,您可以检查每个屏幕的边界框,并测试您的窗口是否位于所有屏幕之外。如果是,则重置位置。
当我打字时,Jared Harley打败了我。