【问题标题】:How to get real value of Screen Size in C# WPF Application如何在 C# WPF 应用程序中获取屏幕大小的实际值
【发布时间】:2026-01-07 19:30:02
【问题描述】:

我正在尝试在SizeChanged 事件中获取我的系统的屏幕宽度和高度。

它在所有情况下都能正常工作,除了:

  1. 将屏幕大小更改为 1024 X 765,然后运行我的应用程序,它工作正常。

  2. 在我的应用程序运行时再次将屏幕尺寸更改为另一个分辨率 得到我以前分辨率的宽度和高度不是当前的。

我在Window_SizeChanged 事件中使用了screen.primaryscreen.bounds.width

【问题讨论】:

  • 我的回答有帮助吗?我知道它使用您使用的相同属性,但它是在 SystemEvents 而不是 Window 事件中执行的。

标签: c# wpf


【解决方案1】:

您可以监控SystemEvents 的变化。

using Microsoft.Win32;

将此添加到您的构造函数或类似内容中:

SystemEvents.DisplaySettingsChanged += 
    new EventHandler(SystemEvents_DisplaySettingsChanged);

这是事件处理程序。我将数据绑定到 2 个文本框,因此当我弄乱分辨率时,我可以看到值发生变化,包括告诉它恢复。

  void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e)
  {
     data.ScreenHeight = Screen.PrimaryScreen.Bounds.Height;
     data.ScreenWidth = Screen.PrimaryScreen.Bounds.Width;
  }

在您的情况下,只需将分配更改为指向您要存储它的位置。

【讨论】:

    最近更新 更多