2010-07-09 33 views
6

¿Me gustaría saber si es posible colocar un formulario de Windows en la parte superior de la pantalla del usuario? He intentado hacer esto al establecer manualmente la posición de mi formulario en las coordenadas que quiero. Pero el uso de este método, sin embargo, permite al usuario cambiar la posición de la forma simplemente arrastrándola. Quiero hacer que el formulario se acople a la parte superior de la pantalla, ya que este formulario de ventana servirá como un menú para el proyecto que estoy creando.¿Cómo acoplar un formulario de Windows en C#?

Muchas gracias. :)

Respuesta

1

Así que después de algunos ajustes finalmente logré que este código funcionara.

this.DesktopLocation = new Point((Screen.PrimaryScreen.Bounds.Width/2 - 420), 0); 

que coloqué debajo de la línea de InitializeComponent() y se acopla mi formulario al centro de la pantalla con los valores de resolución de lo que sea.

3

Consideraría usar la propiedad Control.Dock junto con uno de los valores de enumeración DockStyle.

También es posible que deba jugar con el Layout, de modo que puede distribuir los controles de su formulario de forma diferente según el DockStyle seleccionado.

Necesitará, en mi opinión, considerar la propiedad Control.Location para que pueda saber qué valor de DockStyle acoplar con su formulario.

editar # 1

Su Formulario de Windows tiene una propiedad Dock ya que hereda de Control.

Vamos a considerar lo siguiente:

  1. Cada vez que su forma se acerca más a su lado derecho de la pantalla, por ejemplo, o del contenedor MDI, que desea acoplar bien, ¿verdad? (Poco juego de palabras aquí ... = P) Por lo tanto, debe suscribirse al evento Control.LocationChanged.

    private void myForm_LocationChanged(object sender, EventArgs e) { 
        if (this.Location.X > 900) then 
         this.Dock = DockStyle.Right; 
        else if (this.Location.X < 150) then 
         this.Dock = DockStyle.Left; 
        else if (this.Location.Y > 600) then 
         this.Dock = DockStyle.Bottom; 
        else if (this.Location.Y < 150) then 
         this.Dock = DockStyle.Top; 
        else 
         this.Dock = DockStyle.None; 
    } 
    

De hecho, en lugar de valores constantes, se debe utilizar la resolución del escritorio actual y calcular una relación de ella dónde quiere que su soporte para que se produzca.

*** Descargo de responsabilidad: **** Este código se proporciona tal como es y no se ha probado. Este algoritmo es, con suerte, suficiente para guiarlo a través del proceso de acoplamiento cuando lo necesite. Se puede solicitar asistencia adicional bajo petición. * =)

Parece que la propiedad Form.DesktopLocation es la herramienta más adecuada para el trabajo como para su ventana principal, es decir, su contenedor MDI, por ejemplo. En cuanto a las otras ventanas, estaría de acuerdo con algo que se parece a la muestra de código proporcionada.

¿Le sirve de ayuda?

editar # 2

Si desea evitar la superposición de formulario, quizás el método Control.BringToFront() podría hacerlo antes o después de su llamada al método Control.Show(), dependiendo de lo que funciona mejor para usted.

+0

hola, gracias por la respuesta. Soy un poco nuevo en el uso de las amplias funcionalidades de Visual Studio 2008 y no sé cómo puedo usar la propiedad Control.Dock. ¿Pueden darme algunos ejemplos sobre cómo puedo usar esas propiedades? gracias :) – Smiley

+0

Eso es para los controles de acoplamiento dentro de un formulario, no para acoplar todo el formulario. –

+0

@Jouke Van Der Maas: Supongo que no leyó toda mi respuesta. Menciono la propiedad 'DesktopLocation', es decir, para acoplar toda la ventana en el escritorio. Además, sugiero que esta podría ser una mejor herramienta para el trabajo después de que el OP haya precisado su idea. Por favor revise su comentario en consecuencia. –

0

Al configurar FormBorderStyle de su formulario en None, le quita el controlador de arrastre al usuario para que no pueda moverlo con el mouse.

Luego solo tiene que colocarlo donde desee.

Si realmente desea quitar los usuarios opciones también se puede establecer la propiedad ShowInTaskbar en false

Cuestiones relacionadas