Pregunta

Así que tengo dos formas, Mainform y extraform.
extraform se establece siempre se movió a la derecha del formulario principal cuando se inicializa MainForm
A veces MainForm ocupa ambos monitores y extraform es empujado fuera de la pantalla para no ser visto de nuevo. Me gustaría evitar esto si es posible. ¿Como lo puedo hacer? Debe apoyar monitores duales, que pueden o no pueden tener distancia entre ellos (es decir, la pantalla 1 se 20 píxeles a la izquierda de la pantalla 2).

¿Cómo puedo hacer esto?

¿Fue útil?

Solución

Puede utilizar la clase de pantalla para calcular dónde la ventana está en relación con el escritorio. La clase Screen tiene un método FromRectangle, por lo que puede averiguar qué pantalla debe estar posicionando su formulario de (pasando la propiedad límites de su forma in).

Cada objeto tiene una propiedad Pantalla límites, que se puede utilizar para comparar a la ubicación y el tamaño de la ventana, y ajustar en consecuencia.

Otros consejos

Depende de lo que quiera que debe suceder cuando extraform se empuja más allá de los límites de la pantalla (s).

Sin embargo, para averiguar si es o no está siendo empujado fuera, es bastante sencilla utilizando la clase System.Windows.Forms.Screens. A continuación, puede hacer comprobación de límites de esta manera:

        foreach (var screen in Screen.AllScreens)
        {
            if(screen.Bounds.Contains(this.Bounds))
            {
                Console.WriteLine("Device "+screen.DeviceName+" contains form!");
            }
        }

Código supone estar en una forma. Tenga en cuenta que este código sólo imprime una pantalla que contiene el formulario si el formulario está completamente contenido en la pantalla. Pero esto debería ser bastante simple para fijar, en función de sus necesidades.

Quizás la propiedad DesktopLocation en sus formularios le puede dar una idea de lo que está pasando con lo que está pasando con ellos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top