我们有一个WPF应用程序,它有一个主窗口,ShowDialog显示的一个子窗口,ShowInTaskBar设置为false。
我们将他们的位置保存在关闭位置,并在重新打开时设置Window.Left和Top。
问题是,当您将桌面远程连接到具有多个显示器的计算机,然后打开屏幕上保存位置的子窗口时,无法将其带到单个显示器上。
我们可以在子窗口上更改某些内容以使窗口处理此问题吗?主窗口没有这个问题(我认为它可能与ShowInTaskBar或它是主窗口有关)。
我们有更好的方法存储窗口位置吗?
答案 0 :(得分:2)
WPF中没有默认方式可以访问除主屏幕之外的任何可用屏幕。
WPF确实有SystemParameters.PrimaryScreenHeight和SystemParameters.PrimaryScreenWidth与主屏幕配合使用,但是要获取有关您必须使用System.Windows.Forms.Screen类的主要屏幕的信息。
如果您使用了System.Windows.Forms.Screen类路由,则可以根据窗口所在的屏幕保存有关窗口的相关数据。然后在读取值时,您可以根据驻留在System.Windows.Forms.Screen.AllScreens数组中的屏幕数量将窗口强制到所需的屏幕。它为您提供了放置的灵活性,因为您可以利用系统内的所有可用屏幕而不仅仅是主屏幕。
修改强>
如果您不关心以模块化方式获取屏幕信息(每个屏幕的信息与所有可用屏幕的聚合)并且不想使用System.Windows.Forms.Screen类,您可以使用提供可用屏幕聚合的SystemParameters.VirtualScreen*属性。
答案 1 :(得分:-1)
应始终可以在屏幕上显示任何窗口。以下步骤将当前活动窗口挂钩到鼠标光标: