visual tamaño resolucion pantalla mas letra hacer grande formularios formulario escala controles control como centrar cambiar automático ajuste ajustar c# winforms resize controls

c# - resolucion - Cambiar el tamaño de los controles con el tamaño del formulario



centrar control en formulario c# (5)

Lo que intenta hacer en su código es cambiar el tamaño de los controles, lo que no es tan bueno. En general, el tamaño de los botones y cuadros de texto no se debe cambiar cuando se cambia el tamaño de su formulario, pero a menudo necesitan moverse (cambiar de ubicación). Algunos controles necesitan cambiar el tamaño de acuerdo con el tamaño del formulario y, en la mayoría de los casos, solo una dimensión. Los controles centrales que se usan para el área de trabajo (si está desarrollando la herramienta para dibujar, por ejemplo) deberían cambiar los tamaños de ambas dimensiones. Todo esto puede lograr configurando correctamente las propiedades de Dock y / o Anchor de los controles.

textBox1.Dock = DockStyle.Bottom; textBox1.Anchor = AnchorStyles.Bottom & AnchorStyles.Left;

Todos estos también se configuran fácilmente en el panel Propiedades cuando se utiliza el diseñador.

Pero si eso no es suficiente para usted, en casos excepcionales, lo más probable es que solo desee cambiar la ubicación del control:

textBox1.Location = new Point(newX, newY);

He leído varias preguntas de desbordamiento de pila sin encontrar una buena solución para mi problema. ¿Cómo puedo cambiar el tamaño de mis controles cada vez que se cambia el tamaño del formulario? Me gustaría que se vuelvan más grandes o más pequeños cuando la forma se vuelve más grande o más pequeña.

En Visual Basic esto fue bastante fácil de hacer con la propiedad form.Zoom (que en realidad no requería controles de cambio de tamaño, pero resolvió lo que necesitaba). Lamentablemente, esto no está disponible en C # winforms.

Aquí hay algunas otras cosas que he intentado sin suerte:

private void formMain_Resize(object sender, EventArgs e) {/* double scale; this.scaleWidth = (float)this.Width / (float)this.origWidth; this.scaleHeight = (float)this.Height / (float)this.origHeight; if (this.scaleHeight > this.scaleWidth) { scale = this.scaleHeight; } else { scale = this.scaleWidth; } foreach (Control control in this.Controls) { control.Height = (int)(control.Height * this.scaleHeight); control.Width = (int)(control.Width * this.scaleWidth); this.Refresh(); // control.Font = new Font("Verdana", control.Font.SizeInPoints * heightRatio * widthRatio); } ///////This scaling didnt work for me either //this.Scale(new SizeF(this.scaleWidth, this.scaleHeight)); //this.Refresh(); */ }

Si pasé por alto una muestra de código que funciona realmente en otra pregunta de desbordamiento de pila, me encantaría verla, pero las que encontré fueron similares a las anteriores que no funcionan.

Tal vez estaba haciendo un uso indebido y alguien podría publicar un código de muestra para mostrar a aquellos de nosotros que seguimos haciendo esta pregunta sobre cómo resolver el problema.

Además, he intentado utilizar algunas de las herramientas de anclaje / acoplamiento pensando que lo permitirían automáticamente pero no fue así.


Use Ancla del control. Existe una opción para anclar la parte superior, inferior, izquierda y derecha. Y estás listo para ir.


La mejor opción es usar TableLayoutPanel . Coloque TableLayoutPanel en el formulario, establezca la propiedad Dock en Fill , cree las filas y columnas necesarias y coloque los controles dentro de las celdas. Por supuesto, debe establecer Dock/Anchor en los controles dentro de las celdas, para que respondan a los cambios en el tamaño de la celda. En algunas situaciones, es posible que deba colocar un Panel dentro de una celda y soltar los controles, ya que cada celda solo puede contener un control único. Es posible que también deba configurar RowSpan / ColumnSpan en los controles.

Al usar un TableLayoutPanel , usted tiene control total sobre cómo deben organizarse sus cotrols. Puede establecer el tamaño absoluto o porcentual para filas y columnas.


Encontré una solución alternativa que funciona bien para mí, aprecio cualquier comentario negativo o positivo sobre la solución.

Utilizando varios Contenedores Partidos y Contenedores Partidos dentro de Contenedores Partidos en diferentes regiones, puedo seccionar las piezas principales del diseño, y allí utilizando el Acoplamiento y Anclaje, puedo lograr exactamente lo que quería hacer: funciona maravillosamente.

Debo señalar que soy consciente de que algunas personas en línea mencionan que los contenedores divididos usan muchos recursos.


Si sus controles están en un cuadro de grupo, asegúrese de configurar las propiedades de los cuadros de grupo para que cambien de tamaño. Los controles dentro de la caja están controlados por la caja. El tamaño de la casilla (a menos que esté dentro de otra casilla) está controlado por el formulario.