Pregunta

Me encuentro con un problema al intentar anclar un cuadro de texto a un formulario en los 4 lados. Agregué un cuadro de texto a un formulario y configuré la propiedad Multilínea en Verdadero y la propiedad Ancla en Izquierda, Derecha, Arriba y Abajo para que el cuadro de texto se expanda y reduzca con el formulario en tiempo de ejecución. También tengo algunos otros controles encima y debajo del cuadro de texto.

El anclaje funciona correctamente en Visual Studio 2005 (es decir, puedo cambiar el tamaño del formulario y hacer que los controles se expandan y reduzcan según lo esperado), pero cuando ejecuto el proyecto, la parte inferior del cuadro de texto se extiende hasta la parte inferior del formulario, detrás de los otros controles que normalmente aparecerían debajo de él. Este problema se produce cuando se carga el formulario, antes de intentar cualquier cambio de tamaño. El anclaje del cuadro de texto es correcto para los lados superior, izquierdo y derecho; solo la parte inferior está funcionando mal.

¿Alguien ha oído hablar de esto y, de ser así, pudo encontrar una solución?

¡Gracias!

ACTUALIZACIÓN:

Aquí está parte del código del diseñador según la solicitud de Greg D (solo incluyo las cosas que tienen que ver con el cuadro de texto en sí, no con los otros controles):

Friend WithEvents txtRecommendationText1 As System.Windows.Forms.TextBox

<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
    Me.txtRecommendationText1 = New System.Windows.Forms.TextBox

    ' ...snip...

    'txtRecommendationText1

    Me.txtRecommendationText1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
                Or System.Windows.Forms.AnchorStyles.Left) _
                Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
    Me.txtRecommendationText1.Location = New System.Drawing.Point(4, 127)
    Me.txtRecommendationText1.Multiline = True
    Me.txtRecommendationText1.Name = "txtRecommendationText1"
    Me.txtRecommendationText1.Size = New System.Drawing.Size(223, 149)
    Me.txtRecommendationText1.TabIndex = 10
End Sub

OTRA ACTUALIZACIÓN:

El cuadro de texto sobre el que publiqué originalmente no se heredó de un formulario de clase base (aunque se agregó a una clase personalizada de Control de usuario; probablemente debería haberlo mencionado antes), pero recientemente me encontré con el mismo problema en un conjunto totalmente no relacionado de controles que se heredaron de un formulario de clase base. Es fácil atribuir estos problemas a posibles errores en el marco .NET, pero realmente está empezando a parecerme así.

¿Fue útil?

Solución 3

El cuadro de texto sobre el que publiqué originalmente no se heredó de un formulario de clase base (aunque se agregó a una clase de Control de usuario personalizado; probablemente debería haberlo mencionado antes), pero recientemente me encontré con el mismo problema en un conjunto totalmente no relacionado de controles que se heredaron de un formulario de clase base. Es fácil culpar a estos problemas de posibles errores en el marco .NET, pero realmente está empezando a parecerme así.

Otros consejos

¿Está su Formulario localizado? Verifique los archivos de recursos para una entrada con Textbox.Size , elimine y restablezca el tamaño.
¿Se hereda su Formulario y el Textbox en el formulario base? Intente configurar el modificador de acceso del Textbox en Protegido o Público.
¿Ha implementado la lógica de cambio de tamaño personalizado? Apáguelo y vea si el problema sigue ahí.
¿Ha introducido un Textbox.MinimumSize / MaximumSize ? Eliminar o cambiar el valor.

También podría ser una combinación de estas cosas ...

¿El formulario vuelve al diseño esperado cuando lo redimensiona después de que se ha inicializado de forma extraña? Además, ¿ha establecido una propiedad Height o MinimumHeight / MaximumHeight para el cuadro de texto?

Si es posible, algunos fragmentos del código del diseñador pueden ser útiles. :)

Una posibilidad con la que me he encontrado en el pasado es DPI. Si está ejecutando / probando su código en una máquina con una configuración de DPI diferente a la máquina en la que está desarrollando, puede observar algunas cosas extrañas.

La funcionalidad de anclaje esencialmente establece una distancia fija entre el borde de un control y el borde del padre del control. ¿Su cuadro de texto está incrustado dentro de otro control (por ejemplo, un panel) que no tiene sus anclajes correctamente establecidos? Al hacer clic con el botón derecho en el cuadro de texto en el diseñador, aparecerá un menú emergente que le permite seleccionar cualquier control que exista debajo, también.

¿Su programa incluye alguna lógica de cambio de tamaño personalizada o modifica el tamaño del cuadro de texto mediante programación fuera del código generado por el diseñador? Eso también podría resultar en un comportamiento extraño. Asumí el mantenimiento de varias piezas de software en mi organización donde los desarrolladores originales pasaron una gran cantidad de tiempo implementando la lógica de cambio de tamaño (con errores) que tuve que arrancar para poder dejar que el código generado por el diseñador hiciera trabaja para mí.

Es muy probable debido a que la propiedad 'AutoScaleMode' se establece en InitializeComponent (). Intente configurarlo en 'Ninguno' y vea si eso lo soluciona. He tenido estos problemas un par de veces ahora.

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