我有三个不同尺寸/分辨率的显示器/屏幕设置为扩展视图,所有这些都连接到相同的NVIDIA显卡。从左到右:
我的应用程序有三个独立的Windows,我分别使用以下代码将每个Window定位到相应的监视器/屏幕
window00.Left = System.Windows.Forms.Screen.AllScreens[0].WorkingArea.Left;
window01.Left = System.Windows.Forms.Screen.AllScreens[1].WorkingArea.Left;
window02.Left = System.Windows.Forms.Screen.AllScreens[2].WorkingArea.Left;
window00.WindowState = System.Windows.WindowState.Maximized;
window01.WindowState = System.Windows.WindowState.Maximized;
window02.WindowState = System.Windows.WindowState.Maximized;
我只能将第3个窗口(window02)位置正确地放到最右边的屏幕上(屏幕#02),但是第1个和第2个窗口(window00和window01)都堆叠并最大化到第一个屏幕(屏幕#00) ,将中间屏幕#01留空显示后台桌面环境,无论我设置WindowsState.Maximized还是Normal。
即使我通过屏幕#00的宽度偏移window01位置以使所有三个窗口正确定位到相应的屏幕来解决问题,如果我最大化Windows.State,window01仍会跳回屏幕#00。
为什么会发生这种情况?为什么窗口没有定位或最大化到它分配给的WorkingArea?可能是因为使用Forms属性的WPF应用程序?