Обнаружить изменение разрешения c # WinForms
есть ли простой способ подключиться к событию, которое запускается при изменении разрешения глобального экрана?
- SynchronizationContext.Current имеет значение null в продолжении в основном streamе пользовательского интерфейса
- Как изменить Form1 label.text при установке флажка на form2?
- Windows Forms: Как скрыть кнопку Close (x)?
- Показать консоль в приложении Windows?
- Как остановить BackgroundWorker при закрытии формы?
- Как я могу получить полосы прокрутки в Picturebox
- Как сохранить Список в Settings.Default?
- Как сделать окно всегда оставаться на вершине в .Net?
Обращайтесь к следующему событию:
Microsoft.Win32.SystemEvents.DisplaySettingsChanged
Вы можете обратиться к этой странице для получения более подробной информации.
Вы также можете посмотреть статью msdn в classе SystemEvents.
Существует два события – SystemEvents.DisplaySettingsChanged
и SystemEvents.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;