首页 > 解决方案 > 为应用选择显示器

问题描述

背景:我的笔记本通常放在一个扩展坞中,一个大屏幕连接到该扩展坞。(WPF) 应用程序的图标位于笔记本的屏幕上。Windows(7、64 位)在笔记本显示器而不是大显示器上打开应用程序。

我可以将图标移动到大显示器上,Windows 将在该显示器上打开应用程序。但是在启动未连接到扩展坞的笔记本电脑后,图标再次放置在笔记本电脑的显示器上(我实际上更喜欢将它放在小屏幕上)......

我找到了一些以编程方式设置应用程序主窗口位置的代码,请参阅如何在辅助显示中设置 WPF 窗口位置,但:仅适用于主窗口。所有其他窗口都在图标所在的屏幕上打开。

现在,我也可以指定所有其他窗口的位置。或者我可以编写一些代码来存储窗口关闭时的位置,同时记住屏幕(首选或其他),然后根据可用屏幕在加载窗口时重新设置它。

但这有点矫枉过正:实际上,我只想指定窗口在可用时在大屏幕上的某个位置打开 - 我什至不关心屏幕上的确切位置(Windows 可以确定它现在的方式) .

你能建议什么简单的解决方案?

标签: wpfscreen

解决方案


不幸的是,我不得不触摸每一个窗口才能把事情做好——我想称之为 WTF。

在 typeSystem.Windows.Window的情况下,Owner必须设置属性,加上它的window.WindowStartupLocation = WindowStartupLocation.CenterOwner;. 同样,这指定了比我想指定的更多的细节。

如果是OpenFileDialog,则必须在其ShowDialog方法中提供所有者;MessageBox在其Show方法中使用,。

我认为对于这样一个简单的问题,代码太多了,而且需要指定的代码比我实际想要指定的要多得多。最后,许多 WPF 问题最终变成了 WTF。


推荐阅读