检测分辨率变化的c# WinForms

29

有没有一种简单的方法来钩取全局屏幕分辨率更改事件?

3个回答

39

4

如果您的程序(进程)关闭,则无需取消订阅静态事件(或任何事件)。操作系统会负责释放您的进程的所有内存到操作系统中。

但是,如果您订阅静态事件或订阅指向生命周期长于您订阅对象的对象的任何事件,并且您希望该对象有资格进行垃圾回收-则需要取消订阅(-=)事件。

而且,始终取消订阅所有事件始终是一个好习惯。您永远不知道在源代码/产品的寿命期间,您的对象的生命周期何时会被更改(由其他人)...


3

试试这段简单的代码

using Microsoft.Win32;

SystemEvents.DisplaySettingsChanged += new EventHandler(SystemEvents_DisplaySettingsChanged);

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

and don't forget this line using Microsoft.Win32;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接