¿Hay una manera fácil de enganchar a un evento que se activa al cambiar la resolución de pantalla global?Detecta cambio de resolución C# WinForms
Respuesta
manejar los siguientes eventos:
Microsoft.Win32.SystemEvents.DisplaySettingsChanged
Puede hacer referencia a this página para más detalles.
También querrá ver el msdn article en la clase SystemEvents.
Hay dos eventos - SystemEvents.DisplaySettingsChanged
y SystemEvents.DisplayedSettingsChanging
que puede manejar. Tenga en cuenta que ambos eventos son estáticos y deberá separar sus manejadores antes de salir de su programa.
Seguro que no tiene que cancelar su suscripción a eventos estáticos (o cualquier evento) si su programa (proceso) está muriendo. El sistema operativo se encargará de liberar toda la memoria de su proceso al sistema operativo. Sin embargo, si se suscribe a un evento estático o a cualquier evento que apunte a un objeto con una duración más larga que la suscripción de su objeto, y desea que ese objeto sea elegible para GC, debe darse de baja (- =) del evento.
Y siempre es una buena práctica anular la suscripción a todos los eventos. Nunca se sabe cuándo cambiará la vida útil de sus objetos (por otra persona) durante la vida útil de su código fuente/producto ...
- 1. ¿Detecta cambio de forma real?
- 2. compact framework dotnet 3.5 SP1 detecta la resolución del dispositivo
- 3. ¿Cómo cambio los temas en Telerik WinForms?
- 4. Detecta cambio de zoom de página con jQuery en Safari
- 5. Resolución de sobrecarga de C++
- 6. C# Resolución de alcance predeterminada
- 7. jQuery - Detecta un cambio de ancho de ventana pero no un cambio de altura
- 8. WinForms C# DataGridView force refresh
- 9. WinForms - acción después del evento de cambio de tamaño
- 10. C# delegados, tiempo de resolución de referencia
- 11. Imprimir factura C# Winforms
- 12. C# winforms: graphics.DrawImage problema
- 13. ToggleButton in C# WinForms
- 14. C# - Winforms - Variables globales
- 15. C# Winforms: mostrando eficientemente muchos controles
- 16. Algoritmo de resolución de laberinto en C++
- 17. ¿Detecta fugas de memoria en programas C?
- 18. Winforms C# Outlook Style Calendar
- 19. combobox valor predeterminado winforms C#
- 20. C# WinForms Problema del panel
- 21. Autoscrolling en RichTextBox C# WinForms
- 22. C# winforms combobox dynamic autocomplete
- 23. C# una resolución mejorada de sobrecarga Método
- 24. ¿Cómo obtener resolución de pantalla en C++?
- 25. Strange C Comportamiento # compilador (resolución de sobrecarga)
- 26. Detecta la resolución real de la pantalla (ignorando el zoom del navegador, etc.)
- 27. ¿Detecta el archivo Drag'n'Drop en WPF?
- 28. C# WinForms Gestión de usuarios/permisos
- 29. C# Winforms Propiedades del cuadro de mensaje
- 30. C# WinForms inhabilita la escala de DPI
"tendrá que desconectar sus controladores antes de salir de su programa": ¡por supuesto que no! Una vez que el proceso se detiene, no importa si se da de baja o no ... Es solo que los objetos que están suscritos al evento no serán elegibles para GC y permanecerán en la memoria –
. Necesita separar los manejadores antes del objeto del manejador será GCed. Si el proceso sale, no importa. Si su aplicación continúa ejecutándose después de haber dejado de preocuparse por los cambios en la pantalla, debe darse de baja en ese momento para que GC funcione correctamente. – user169771
La documentación dice: "Debido a que se trata de un evento estático, debe desconectar los controladores de eventos cuando se desecha su aplicación, o se producirá una pérdida de memoria". https://msdn.microsoft.com/en-us/library/microsoft.win32.systemevents.displaysettingschanged.aspx?f=255&MSPPError=-2147217396 – CLS