2009-08-31 12 views
5

Estoy confundido por algún comportamiento extraño en el editor de formularios de Visual Studio. Lo he visto en un par de formas diferentes en mi aplicación. Cada vez que abro el formulario en el editor de diseño de Visual Studio, algunos controles estarán en una ubicación diferente a cuando los dejé. Por lo general, algunos botones se mueven un poco hacia arriba desde la esquina inferior derecha. Pero no son solo botones, en un caso es un panel de contenedor que se mueve. Tengo que reposicionarlos, luego guardar y cerrar el formulario. He confirmado que es el editor de diseño de cambiar realmente la propiedad Location cuando se abre el formulario porque si lo guarde y cierre el formulario con los botones en la posición correcta que será correcta en tiempo de ejecución.WinForms controles quedan dislocadas cada vez que el formulario se ve

Esto no es un problema con las propiedades Anchor o Dock que no se configuraron correctamente. El editor realmente está cambiando la propiedad Location de mis controles. Miré el archivo .designer.cs y no veo nada inusual. Intenté eliminar y volver a crear estos controles, pero el problema persiste.

Alguna idea de lo que pueda hacer?

No es un show stopper Solo tengo que tener mucho cuidado de arreglar los controles manualmente cada vez que lo abro en el editor de diseño de winforms.

Editar: Visual Studio en realidad comprueba el archivo automáticamente para establecer el Location a lo que tercamente cree que debería ser.

+1

¿Es esta una acción VS2008 o se aplica SP1? – Powerlord

+0

Sí SP1 está instalado. Su VS2008 Team Edition + SP1. –

+0

Hola. Encontraste una solución a este problema ? ¡De repente estoy experimentando exactamente el mismo comportamiento! – Jalil

Respuesta

2

Encontré la respuesta a este problema, pero parece un error para mí. ¡Nunca se ha resuelto desde 2003!

En resumen: la herencia visual no funciona bien con Anclar.

La respuesta completa aquí: http://weblogs.asp.net/rweigelt/archive/2003/09/24/28984.aspx

+0

esto ha solucionado tu problema? Ya no tengo acceso al código, así que no puedo probarlo. –

+0

Tal vez podrías probar números pares en el archors, etc ;-) – Andrew

+0

Estoy aceptando esta respuesta en base a los resultados de Jalil y como esta pregunta ha estado abierta por tanto tiempo, esta parece ser la mejor respuesta que obtendremos. Pero como autor original de la pregunta no puedo decir con certeza si esto solucionaría mi problema original porque ya no tengo acceso a ese código. –

0

Es muy probable que sea un problema relacionado con el DPI. Compruebe el designer.cs para una propiedad AutoScaleMode e intente cambiarlo (o agregue uno) para establecer el formulario.AutoscaleMode = Font

+0

Ya estaba configurado en AutoScaleMode = Font, al igual que todas mis otras formas. –

0

Intente bloquear los controles en modo de diseño y luego vea cómo funciona.

+0

Me olvidé de mencionarlo pero lo intenté. –

1

Estoy de acuerdo con PaulG, su más probable un problema relacionado con DPI

Por favor cambia la configuración de la tarjeta de vídeo de gran tamaño (120 ppp) a normal (96 ppp).

+0

Esto no funcionó para mí. – Jalil

2

El editor de WinForms es un WYSIWYG que requiere que el editor realmente ejecute el código de diseño para mostrarle exactamente cómo se verá el formulario. Si bien es extremadamente conveniente, hay una serie de problemas de huevo y pollo que comienzan a causar estragos en su editor.

Un problema común es la de dimensionamiento. A veces, las propiedades de control se ordenan incorrectamente (y, al ser generadas automáticamente, no se puede arreglar). El resultado es que algún valor necesario no se establece hasta después de la propiedad que lo necesita. Un ejemplo famoso es el SplitContainer y la MinSize de PANEL2 (ver http://social.msdn.microsoft.com/Forums/en-US/winformsdesigner/thread/ee6abc76-f35a-41a4-a1ff-5be942ae3425). Es posible que experimente un problema de raíz similar, pero el resultado es que la ubicación de los controles está cambiando.

Examinaré el orden de sus propiedades en el Diseñador e intentaré determinar si esa podría ser la raíz del problema. Si es así, es posible que deba establecer alguna propiedad en tiempo de ejecución. Sin embargo, en general, rara vez hay una verdadera "solución": la resolución suele ser una "solución alternativa".

Este tipo de problemas formaron parte de la motivación para crear WPF. La naturaleza declarativa de XAML ayuda a prevenir este tipo de ocurrencias sin dejar de ofrecer la sensación WYSIWYG.

Cuestiones relacionadas