.net - Wpf - 以主桌面为中心

标签 .net wpf window wpf-positioning

我知道 WPF 有一个“CenterScreen”值,用于使窗口在桌面上居中。 然而,在双显示器上,这并不是很令人愉快。

如何以主显示器为中心?我是否需要完成检测主桌面、获取其几何形状等的工作,或者是否有更好的方法?

最佳答案

多屏幕是一个问题,它没有内置的、精美包装的方法来处理它们,但通过一些数学和系统参数,您可以完成它。

如果您将窗口定位在位置 (0,0),则该位置将是主屏幕的左上角。因此,为了使您的窗口出现在该屏幕的中心,请使用:

this.Left = (SystemParameters.PrimaryScreenWidth / 2) - (this.ActualWidth / 2);
this.Top = (SystemParameters.PrimaryScreenHeight / 2) - (this.ActualHeight / 2);

基本思想很简单,无需解释。

请注意,此代码适用于 C#,但我确信 VB 也有类似的代码。

另请注意,您应该使用 ActualWidth\ActualHeight 属性,而不是 Width\Height 属性,因为它可能包含 NaN 值。

祝你好运。

关于.net - Wpf - 以主桌面为中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1392126/

相关文章:

java - 强制 java 应用程序成为焦点窗口

.NET Framework SDK 与 .NET Framework

c# - 可移植类库 - 对类型 'MarshalByRefObject' 的引用声称它在 'mscorlib' 中定义,但找不到

c# - 实例方法如何转换为委托(delegate)?

c# - 如何重新查询单个 RoutedCommand 的 'CanExecute'?

Linux捕获窗口大流数据

WPF 窗口背景 ImageBrush 不平铺

c# - 如何只从网站上删除 <body> 标签

c# - 用字符串路径绑定(bind)背景

wpf - 以 wpf 形式加载设计器时出错