2010-04-08 16 views
10

Esto debe ser una pregunta frecuente, pero no puedo encontrar una pregunta duplicada.¿Cómo hago para que el Diseñador de WinForm ignore por completo una propiedad en un control personalizado?

Hay muchos atributos diferentes que controlan qué hace el Diseñador de WinForm con las propiedades de un control personalizado, nunca tengo claro el que debería usar en este caso.

Busco:

  • Diseñador no muestra una propiedad en la rejilla
  • diseñador no leer el valor de la propiedad
  • diseñador no establece la propiedad al valor por defecto
  • P. ej El diseñador se comporta como si la propiedad no estuviera allí.
  • diseñador no se queja si ya se ha hecho uno de los anteriores antes de añadir los atributos (duro!)

de fondo.

El código que me está dando el problema es:

this.eventListControl.FilterSets = 
    ((SystList<FilterSet>)(resources.GetObject("eventListControl.FilterSets"))); 

La propiedad filtersets nunca debería haber sido tocado por el diseñador de Windows Forms; ahora no es Serializable y MsDev se cae cada vez que se cambia un formulario que utilizó el eventListControl.

+0

Además, ILMerge no reescribe adecuadamente esto, así que si 'FilterSets' estaba en un archivo DLL que tiene fusionada, esta línea de código arrojará. –

Respuesta

28

Creo que se puede utilizar [Browsable (false)] y [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]

El segundo atributo impide que la propiedad de aparecer en InitializeComponent

+0

gracias, eso detiene que el desinger lo haya agregado a InitializeComponents en nuevos formularios; sin embargo, el diseñador aún no puede leer los archivos de recursos para los formularios que ya tienen el control, así que tengo que editar los archivos de recursos a mano. –

Cuestiones relacionadas