检测分辨率c#WinForms的变化

时间:2009-01-14 09:03:52

标签: c# .net winforms

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

4 个答案:

答案 0 :(得分:33)

处理以下事件:

Microsoft.Win32.SystemEvents.DisplaySettingsChanged

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

您可能还希望在SystemEvents类上看到msdn article

答案 1 :(得分:7)

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

答案 2 :(得分:4)

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

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

答案 3 :(得分:2)

尝试这个简单的代码

using Microsoft.Win32;

SystemEvents.DisplaySettingsChanged += new EventHandler(SystemEvents_DisplaySettingsChanged);

static void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e)
{
     MessageBox.Show("Resolution Change.");
}

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

相关问题