0

我有一个问题,我希望找到最好和最容易实施的解决方案。

我写了一个 WPF 应用程序,它可以在桌面上拖动,但我通常把它放在屏幕的右上角。

我的问题是,当我从另一个位置远程拨入时 - 分辨率总是较低 - 应用程序不在屏幕上,除非我终止进程并重新启动它,否则我无法取回它。

我已经想到了一些想法,以便始终保持可见。

1] 每当它运行时,让它产生一个子线程,在循环中检查可见分辨率。当它超出检测到的范围时,它将更新其位置。

2]当我远程进入时,使用某种消息传递系统向它发送一条消息——这将触发它重新对齐。

有没有人有什么建议??

4

1 回答 1

2

您可以有一个 DispatcherTimer 定期(每隔几秒)触发,以确保窗口位于可见屏幕之一上。如果不是,它会重新定位,这样它就是。

您可以使用 System.Windows.Forms.Screen 类来访问有关用户桌面和屏幕设置的信息,即使您使用的是 WPF。

就像是:

bool isWithin = false;
foreach (Screen screen in Screen.AllScreens)
{
    if (screen.Bounds.Contains(windowLocation))
        isWithin = true;
}

// if !isWithin, move to 0,0
于 2009-09-08T13:04:21.967 回答