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:
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.
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
Eso es para los controles de acoplamiento dentro de un formulario, no para acoplar todo el formulario. –
@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. –