que puedo programa poner para pantalla ocupe hago expandir completa como ampliar achico .net wpf windows fullscreen multiple-monitors

.net - puedo - pantalla completa pc en tv



Pasando a pantalla completa en monitor secundario (7)

De su pregunta no queda claro si está buscando una manera de mover la ventana al monitor secundario y luego ir a pantalla completa, o si solo está buscando el modo de pantalla completa en cualquier monitor en el que esté la ventana (que puede ser primaria o secundaria). ).

Si es el último, para una ventana WPF, aunque no es lo mismo que el modo de pantalla completa, puede eliminar los bordes cuando se maximiza y restaurar el borde cuando no está maximizado. No es necesario comprobar qué monitor, etc. La visualización de la barra de título / título está controlada por el estado del borde.

protected override void OnStateChanged(EventArgs e) { if (WindowState == WindowState.Maximized) { if (WindowStyle.None != WindowStyle) WindowStyle = WindowStyle.None; } else if (WindowStyle != WindowStyle.SingleBorderWindow) WindowStyle = WindowStyle.SingleBorderWindow; base.OnStateChanged(e); }

El crédito es para Pavel por su respuesta basada en formularios en la pregunta actual y para Nir por su respuesta en esta pregunta .

¿Cómo se puede programar una aplicación de Windows dotNet (o WPF) para dejarla en pantalla completa en el monitor secundario?


En WPF: establezca la propiedad WindowState en Normal (no Maximixed) y cree el evento Loaded. En el caso de escribir este código:

this.Left = SystemParameters.PrimaryScreenWidth + 100; this.WindowState = System.Windows.WindowState.Maximized;


Método de extensión para maximizar una ventana al monitor secundario (si lo hay). No asume que el monitor secundario es System.Windows.Forms.Screen.AllScreens [2];

using System.Linq; using System.Windows; namespace ExtendedControls { static public class WindowExt { // NB : Best to call this function from the windows Loaded event or after showing the window // (otherwise window is just positioned to fill the secondary monitor rather than being maximised). public static void MaximizeToSecondaryMonitor(this Window window) { var secondaryScreen = System.Windows.Forms.Screen.AllScreens.Where(s => !s.Primary).FirstOrDefault(); if (secondaryScreen != null) { if (!window.IsLoaded) window.WindowStartupLocation = WindowStartupLocation.Manual; var workingArea = secondaryScreen.WorkingArea; window.Left = workingArea.Left; window.Top = workingArea.Top; window.Width = workingArea.Width; window.Height = workingArea.Height; // If window isn''t loaded then maxmizing will result in the window displaying on the primary monitor if ( window.IsLoaded ) window.WindowState = WindowState.Maximized; } } } }


Noté una respuesta que aboga por establecer la posición en el evento Loaded, pero esto causa un parpadeo cuando la ventana se muestra normal y luego maximizada. Si se suscribe al evento SourceInitialized en su constructor y establece la posición allí, manejará la maximización en monitores secundarios sin parpadeo, asumo WPF aquí

public MyWindow() { SourceInitialized += MyWindow_SourceInitialized; } void MyWindow_SourceInitialized(object sender, EventArgs e) { Left = 100; Top = 50; Width = 800; Height = 600; WindowState = WindowState.Maximized; }

Sustituya los acordes por cualquiera en su monitor secundario.


Para aplicaciones de WPF mira esta publicación . En última instancia, depende de cuándo se establece WindowState en Maximizado. Si lo establece en XAML o en el constructor de ventanas (es decir, antes de que se cargue la ventana), siempre se maximizará en la pantalla principal. Si, por otro lado, establece WindowState en Maximizado cuando se carga la ventana, se maximizará en la pantalla en la que se maximizó antes.


Vea este artículo de código de proyecto.

El código allí funcionará, pero por defecto a su monitor principal. Para cambiar esto, deberá reemplazar las llamadas a GetSystemMetrics y las llamadas a GetMonitorInfo . Usando GetMonitorInfo, puede obtener el RECT apropiado para pasar a SetWindowPos.

GetMonitorInfo le permite obtener el RECT para cualquier monitor.

Hay un artículo de MSDN sobre aplicaciones de posición en configuraciones de monitores múltiples que podrían ayudar a explicar las cosas un poco mejor.


private void Form1_Load(object sender, EventArgs e) { this.FormBorderStyle = FormBorderStyle.None; this.Bounds = GetSecondaryScreen().Bounds; } private Screen GetSecondaryScreen() { foreach (Screen screen in Screen.AllScreens) { if (screen != Screen.PrimaryScreen) return screen; } return Screen.PrimaryScreen; }