16

Tengo un UserControl algo complejo y Visual Studio 2008 me proporciona una molestia bastante inofensiva cuando trabajo con él. Cada vez que abro el control con el Diseñador, decide cambiar inmediatamente algunos de los valores inofensivos establecidos por el diseñador, a saber, la inicialización de las propiedades de Tamaño. Si guardo esos cambios, cierro y vuelvo a abrir, casi invariablemente termina decidiendo que otro componente de mis necesidades de control ha cambiado su tamaño inicial, ad infinitum. Afortunadamente estos cambios son inofensivos ya que estoy usando el tamaño automático en todas partes, pero es bastante molesto trabajar con esto. No tengo ni la más mínima idea de por dónde empezar a descubrir qué está pasando mal, mi único pensamiento ahora es que el Diseñador esté asignando los resultados del auto-ajuste de tamaño a los campos de tamaño inicial cada vez que abra el control. Alguna idea sobre causas/soluciones?Visual Studio Designer siempre intenta cambiar mi control

Edit: Además, estoy usando Configuración de aplicaciones para guardar tamaños de ciertos componentes secundarios redimensionables en todas las ejecuciones de la aplicación, pero realmente espero que el Diseñador sea lo suficientemente inteligente como para entender que solo debe usar los valores predeterminados.

+0

Obtengo esto totalmente, lo que es realmente irritante porque me impulsa a controlar la fuente cada maldito momento, ¡y de vez en cuando se producen cambios bruscos! – GWLlosa

+2

Tengo el mismo problema en Visual Studio 2012, donde los controles secundarios de mi control personalizado se están cambiando de tamaño. ¿Alguna palabra sobre una solución que funcionó para ti? – almostProgramming

Respuesta

5

Tiene razón, el diseñador a menudo intenta agregar valores predeterminados a las propiedades.

Añadir esta en la parte superior de la declaración de la propiedad:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 

que le dirá al diseñador para ignorar esta propiedad.

+0

No puedo hacer eso con la propiedad Tamaño, ya que se hereda de Control y no virtual (bueno, sin redeclar y canalizar a la clase base, lo cual es una tontería). Además, estoy usando principalmente componentes listos para usar, por lo que tendría que cambiarlos a mis propias clases derivadas personalizadas, lo cual tampoco es realmente una buena opción. –

+0

No veo cómo puede tomar el control de la propiedad Size sin "newing". – Benjol

1

Tengo un problema similar. Estoy usando Infragistics GroupBox en un control de usuario que heredé y ahora quiero cambiar su aspecto en la clase derivada. Lo hice protegido en la clase base, por lo que me permite cambiar las propiedades en la clase derivada. Pero no lo salva. Cada vez que lo abro, recupero los mismos viejos valores de la clase base.

¿Alguna idea?

Edit: Me di cuenta.

Probando varios valores para una de las respuestas anteriores. El uso de [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] en lugar de [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] genera código para las propiedades modificadas, y las cosas funcionan como se desee.

0

Intente anular la propiedad DefaultSize de su control.

De MSDN: La propiedad DefaultSize representa el Tamaño del control cuando se crea inicialmente.

+0

No es mi control cuyo tamaño está cambiando, son todos los controles secundarios cuyos tamaños cambian. –

8

Quizás puede ayudar:
Me di cuenta de que FormDesigner (sin WPF, sin Web, etc.) tiene un comportamiento extraño si inserta un UserControl personalizado.
Hay un cambio aleatorio de otros controles (GroupBox, EditBox, ComboBox) tamaño (para mí sucedió con el ancho).
Los controles elegidos para cambiar el tamaño parecen ser aleatorios, pero a través del reinicio de vs2010 siempre es el mismo. Si se elimina y se reinserta, el diseñador elige un control diferente al azar ...

Cambié la propiedad AutoScaleMode de mi UserControl de "Fuente" a "Heredar" y no volvió a suceder.

+0

Sí, exactamente. tal vez no especifiqué claramente. No estoy usando WPF ni WebDesigner –

+0

Disculpe, no sé por qué pensé que había respondido sobre WPF. –

+1

AutoScaleMode ayudado. Establezca esto en Ninguno en mi caso. – transistor1

Cuestiones relacionadas