¿Cómo se puede programar una aplicación dotNet Windows (o WPF) para que la pantalla completa aparezca en el monitor secundario?Pantalla completa en el monitor secundario
Respuesta
El código no va a funcionar, pero por defecto para el monitor principal. Para cambiar esto, deberá reemplazar las llamadas a GetSystemMetrics 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 MSDN Article on Position Apps in Multi-Monitor Setups que podría 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;
}
No es claro por su pregunta si usted está buscando una manera de mover la ventana al monitor secundario y luego ir a pantalla completa, o si usted está buscando para soportar el modo de pantalla completa en cualquier monitor de la ventana está en (que puede ser primario o secundario).
Si la última, para una ventana WPF, aunque no es lo mismo que el modo de pantalla completa, puede eliminar los bordes cuando se maximiza y restablecer el borde cuando no se maximiza. No es necesario verificar 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);
}
crédito va a Pavel por su respuesta basada en formularios en la pregunta actual y Nir por su respuesta en this question.
Para aplicaciones WPF, mire this post. En última instancia, depende de cuándo WindowState está configurado en Maximized. Si lo configura en XAML o en el constructor de la ventana (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, maximizará en la pantalla en la que se maximizó antes.
** ¡Gracias! ** Se ayudó a mover el código de posición de restauración del constructor de la clase de ventana al controlador _Loaded_. Lo único que debería agregar es que la clase Window envía la notificación _LocationChanged_ con la configuración predeterminada antes de enviar la notificación _Loaded_, por lo que debe omitir la notificación _LocationChanged_ hasta que restablezca la posición de la ventana en _Loaded_ handler. – Mar
En WPF: establezca la propiedad WindowState en Normal (no Maximixed) y cree el evento Cargado. En el caso de escribir este código:
this.Left = SystemParameters.PrimaryScreenWidth + 100;
this.WindowState = System.Windows.WindowState.Maximized;
Eso supone que el monitor secundario está a la derecha del primario. – Paul
método de extensión para maximizar una ventana al monitor secundario (si lo hay). No supone que el monitor secundario sea 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;
}
}
}
}
funciona como un encanto ... – kennyzx
noto una respuesta que aboga por el establecimiento de la posición en el evento Loaded, pero esto hace que el parpadeo cuando la ventana se muestra primero normal, entonces maximizada. Si se suscribe al evento SourceInitialized en su constructor y establecer la posición en la que hay que se encargará de maximizar en monitores secundarios y 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;
}
coords sustituto de ninguna en su monitor secundario
- 1. Pantalla de visualización de pantalla completa en el monitor secundario usando Qt
- 2. Mostrar os x ventana de pantalla completa en el monitor secundario usando Cocoa
- 3. Mover la ventana de pantalla completa al monitor secundario con Win32/SDL
- 4. Aplicación C++ para desconectar el monitor secundario
- 5. ¿Cómo puedo mostrar un formulario en un monitor secundario?
- 6. ¿Por qué WPF MediaElement no funciona en el monitor secundario?
- 7. Modo de pantalla completa falsa de SDL en configuración de monitor dual en Linux
- 8. monitores dobles de pygame y pantalla completa
- 9. ¿Mostrando un formulario de Windows en un monitor secundario?
- 10. Pantalla completa en personalizar el tema
- 11. Forzar pantalla completa en Chrome
- 12. Pantalla completa Iframe
- 13. Safari Mobile pantalla completa
- 14. Pantalla completa con pyqt4?
- 15. Obtener el tamaño del monitor en python
- 16. Pantalla completa Google Map
- 17. Widget de pantalla completa
- 18. Pantalla completa C# Aplicación
- 19. Mantenga la API de pantalla completa en pantalla completa después de hacer clic en un vínculo
- 20. CSS div pantalla completa con el texto en el medio
- 21. Java GUI Pantalla completa para pantallas múltiples
- 22. Java Windows 8 Pantalla completa?
- 23. iOS - Force pantalla completa video
- 24. jQuery ui pantalla completa diálogo
- 25. Cómo pantalla completa un QGLWidget?
- 26. "pantalla completa" <iframe>
- 27. Mostrar video HTML5 Pantalla completa
- 28. Mostrar cuadro de diálogo/cuadro a pantalla completa en una segunda pantalla cantar QT/C++
- 29. minimizar pantalla completa OpenGL Window
- 30. ¿Por qué nuestra aplicación Java no mostraría ventanas en el monitor secundario?
Esto funciona pero requiere una referencia a System.Windows.Forms.dll –