gpt4 book ai didi

c# - 显示带有 WPF、Winforms 和双显示器的窗口

转载 作者:可可西里 更新时间:2023-11-01 08:18:40 24 4
gpt4 key购买 nike

我有 2 个显示器和一个启动 WPF 窗口的 WinForm 应用程序。我想获取 WinForm 所在的屏幕,并在同一屏幕上显示 WPF 窗口。我该怎么做?

最佳答案

WPF 不包括方便的 System.Windows.Forms.Screen 类,但您仍然可以使用它的属性来完成您在 WinForms 应用程序中的任务。

假设 this 表示 WinForms 窗口,而 _wpfWindow 是一个已定义的变量,在下面的示例中引用 WPF 窗口(这将在您设置为打开的任何代码处理程序中WPF 窗口,如某些 Button.Click 处理程序):

Screen screen = Screen.FromControl(this);
_wpfWindow.StartupLocation = System.Windows.WindowStartupLocation.Manual;
_wpfWindow.Top = screen.Bounds.Top;
_wpfWindow.Left = screen.Bounds.Left;
_wpfWindow.Show();

以上代码将在包含 WinForms 窗口的屏幕的左上角实例化 WPF 窗口。如果您希望将其放置在屏幕中间等其他位置或以“级联”样式放置在 WinForms 窗口的下方和右侧,我会把数学留给您。

在屏幕中间获取 WPF 窗口的另一种方法是简单地使用

_wpfWIndow.StartupLocation = System.Windows.WindowStartupLocation.CenterScreen

但是,这不是很灵活,因为它使用鼠标的位置来确定在哪个屏幕上显示 WPF 窗口(显然,如果用户移动鼠标,鼠标可能与您的 WinForms 应用程序位于不同的屏幕上)快速,或者您使用默认按钮,或其他)。

编辑:Here's a link to an SDK document关于使用 InterOp 使 WPF 窗口居中于非 WPF 窗口。它基本上完成了我在计算数学方面所描述的内容,但正确地允许您使用窗口的 HWND 设置 WPF 窗口的“所有者”属性。

关于c# - 显示带有 WPF、Winforms 和双显示器的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/512398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com