如何在C#WPF应用程序中获得屏幕大小的实际值

如何在C#WPF应用程序中获得屏幕大小的实际值,c#,wpf,C#,Wpf,我正在尝试在SizeChanged事件中获取系统的屏幕宽度和高度 除以下情况外,它在所有情况下都可以正常工作: 将屏幕大小更改为1024x765,然后运行我的应用程序,它可以正常工作 当我的应用程序运行时,再次将屏幕大小更改为其他分辨率 已获取以前分辨率的宽度和高度不是当前分辨率 我在窗口大小更改事件上使用了screen.primaryscreen.bounds.width。您可以监视系统事件的更改 using Microsoft.Win32; 将其添加到构造函数或类似内容: SystemEv

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

除以下情况外,它在所有情况下都可以正常工作:

  • 将屏幕大小更改为1024x765,然后运行我的应用程序,它可以正常工作

  • 当我的应用程序运行时,再次将屏幕大小更改为其他分辨率 已获取以前分辨率的宽度和高度不是当前分辨率


  • 我在
    窗口大小更改
    事件上使用了
    screen.primaryscreen.bounds.width

    您可以监视
    系统事件的更改

    using Microsoft.Win32;
    
    将其添加到构造函数或类似内容:

    SystemEvents.DisplaySettingsChanged += 
        new EventHandler(SystemEvents_DisplaySettingsChanged);
    
    下面是事件处理程序。我将数据绑定到两个文本框中,这样我就可以在我弄乱分辨率时看到值的变化,包括告诉它恢复

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

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

    我的回答有帮助吗?我知道它使用了与您使用的相同的属性,但它在
    SystemEvents
    中使用,而不是在窗口事件中使用。