Обнаружить изменение разрешения c # WinForms - PullRequest
23 голосов
/ 14 января 2009

Есть ли простой способ подключиться к событию, которое вызывается при изменении глобального разрешения экрана?

Ответы [ 4 ]

33 голосов
/ 14 января 2009

Обработка следующего события:

Microsoft.Win32.SystemEvents.DisplaySettingsChanged

Вы можете обратиться к этой странице для более подробной информации.

Вы также можете прочитать статью msdn в классе SystemEvents.

7 голосов
/ 14 января 2009

Есть два события - SystemEvents.DisplaySettingsChanged и SystemEvents.DisplayedSettingsChanging, которые вы можете обработать. Обратите внимание, что оба события являются статическими, и вам необходимо отсоединить ваши обработчики перед выходом из вашей программы.

4 голосов
/ 02 сентября 2011

Конечно, вам не нужно отписываться от статических событий (или любых событий), если ваша программа (процесс) умирает. ОС позаботится об освобождении всей памяти вашего процесса для ОС. Однако, если вы подписываетесь на статическое событие или любое другое событие, указывающее на объект с более длительным сроком службы, чем подписка вашего объекта, и вы хотите, чтобы этот объект имел право на GC - вам необходимо отписаться (- =) на событие.

И это всегда хорошая практика, чтобы всегда отписываться от всех событий. Вы никогда не знаете, когда время жизни ваших объектов изменяется (кем-то еще) в течение срока службы вашего исходного кода / продукта ...

2 голосов
/ 10 августа 2018

попробуйте этот простой код

using Microsoft.Win32;

SystemEvents.DisplaySettingsChanged += new EventHandler(SystemEvents_DisplaySettingsChanged);

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

и не забывайте эту строку using Microsoft.Win32;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...