resolucion pantalla obtener maximizar formularios formulario escala autoscalemode automático aplicacion ajuste ajustar adaptar c# .net windows winforms screen

pantalla - maximizar formulario c#



¿Cómo puedo determinar en qué monitor se está ejecutando mi programa.NET Windows Forms? (5)

La ubicación del formulario le dirá en qué pantalla está el formulario. Realmente no entiendo por qué necesitarías saber en qué pantalla está, porque si lo restauras usando la ubicación que guardaste, debería restaurarlo en la misma ubicación (tal vez puedes ampliar el por qué).

De lo contrario, puedes hacer algo como esto:

Screen[] scr = Screen.AllScreens; scr[i].Bounds.IntersectsWith(form.Bounds);

Cada pantalla tiene una propiedad de límites que devuelve un rectángulo. Puede usar la función IntersectsWith () para determinar si el formulario está dentro de la pantalla.

Además, básicamente proporcionan una función que también lo hace en la clase Screen

Screen screen = Screen.FromControl(form);

Tengo una aplicación C # Windows que quiero asegurarme de que aparezca en un segundo monitor si el usuario lo mueve a uno. Necesito guardar el tamaño del formulario principal, la ubicación y el estado de la ventana, que ya he manejado, pero también necesito saber en qué pantalla estaba cuando el usuario cerró la aplicación.

Estoy usando la clase Screen para determinar el tamaño de la pantalla actual, pero no encuentro nada sobre cómo determinar en qué pantalla se está ejecutando la aplicación.

Editar: Gracias por las respuestas, ¡a todos! Quería determinar en qué monitor estaba la ventana para poder verificar correctamente los límites en caso de que el usuario colocara accidentalmente la ventana fuera del área de visualización o cambiara el tamaño de la pantalla de modo que el formulario ya no estuviera completamente visible.


Puede obtener una serie de Pantallas que tiene utilizando este código.

Screen[] screens = Screen.AllScreens;

También puede averiguar en qué pantalla está, ejecutando este código ( este es el formulario de Windows en el que se encuentra)

Screen screen = Screen.FromControl(this); //this is the Form class

en resumen, echa un vistazo a la clase Screen y los métodos estáticos de ayuda, pueden ayudarte.

MSDN Link , no tiene mucho ... Te sugiero que vayas solo por el código.


Puede usar el objeto ''Pantalla'': System.Windows.Forms.Screen

Comienza a jugar con algo como esto:

Screen[] screens = Screen.AllScreens; for (int i = 0; i < screens.Length ; i++) { Debug.Print(screens[i].Bounds.ToString()); Debug.Print(screens[i].DeviceName); Debug.Print(screens[i].WorkingArea.ToString()); }

Puede conseguirte lo que necesitas


Puedes obtener la pantalla actual con

var s = Screen.FromControl(this);

donde this es la Forma (o cualquier control en la Forma). En cuanto a cómo recordar eso, es un poco complicado, pero iría por el índice en la matriz Screen.AllScreens, o quizás en el nombre del dispositivo. En cualquier caso, verifique antes de usar la configuración al inicio, para evitar el uso de un monitor que se desconectó.


Si recuerda la ubicación y el tamaño de la ventana, eso será suficiente. Cuando establece la posición en la posición utilizada anteriormente, si sucedió en el segundo monitor volverá allí.

Por ejemplo, si tiene 2 monitores, ambos tienen un tamaño de 1280x1024 y configura la posición izquierda de su ventana en 2000px, aparecerá en el segundo monitor (suponiendo que el segundo monitor esté a la derecha de la primera). :)

Si le preocupa que el segundo monitor no esté allí cuando la aplicación se inicie la próxima vez, puede usar este método para determinar si su ventana cruza alguna de las pantallas:

private bool isWindowVisible(Rectangle rect) { foreach (Screen screen in Screen.AllScreens) { if (screen.Bounds.IntersectsWith(rect)) return true; } return false; }

Simplemente pase por la ubicación deseada de su ventana y le dirá si será visible en una de las pantallas. ¡Disfrutar!