检测分辨率c#WinForms的变化

是否有一种简单的方法可以挂钩在更改全局屏幕分辨率时触发的事件?

处理以下事件:

Microsoft.Win32.SystemEvents.DisplaySettingsChanged 

您可以参考此页面了解更多详情。

您可能还想在SystemEvents类上看到msdn文章 。

有两个事件 – 您可以处理的SystemEvents.DisplaySettingsChangedSystemEvents.DisplayedSettingsChanging 。 请注意,这两个事件都是静态的,您需要在退出程序之前分离处理程序。

如果您的程序(进程)正在死亡,您肯定不必取消订阅静态事件(或任何事件)。 操作系统将负责将进程的所有内存释放到操作系统。 但是,如果您订阅静态事件或指向生命周期比对象订阅更长的对象的任何事件,并且您希望该对象符合GC的条件 – 您需要取消订阅( – =)该事件。

始终取消订阅所有活动总是好的做法。 在源代码/产品的生命周期中,您永远不知道对象的生命周期何时被其他人更改…

试试这个简单的代码

 using Microsoft.Win32; SystemEvents.DisplaySettingsChanged += new EventHandler(SystemEvents_DisplaySettingsChanged); static void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e) { MessageBox.Show("Resolution Change."); } 

并且不要忘记using Microsoft.Win32;这一行using Microsoft.Win32;