2008-08-27 8 views
36

Comment empêchez-vous le concepteur de générer automatiquement du code qui définit la valeur des propriétés publiques sur un contrôle utilisateur?Comment arrêtez-vous le code de création Designer pour les propriétés publiques sur un contrôle utilisateur?

+3

Je me demande quel est le but de concepteur de singe avec vos propriétés ... – GorillaApe

+0

j'avais des problèmes concepteur d'ouverture parce que je d accidentellement sérialisé un objet d'une ancienne version d'un classlib que j'utilisais. Tedious to trace: http://stackoverflow.com/questions/28272552/visual-studio-2013-designer-trying-to-load-wrong-version-of-project-dll – scotru

Répondre

61

Utilisez DesignerSerializationVisibilityAttribute sur les propriétés que vous voulez cacher la sérialisation concepteur et définissez le paramètre Hidden.

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 
public string Name 
{ 
    get; 
    set; 
} 
+1

Ah, enfin je peux résoudre ce problème ennuyeux! –

+0

Très utile si le formulaire de base a une propriété publique liée à la propriété text d'un contrôle. L'éditeur veut définir la valeur sous forme héritée et ainsi déranger avec la localisation. Semblable à [un autre problème] (http://stackoverflow.com/q/13145340/395718) sur SO. – Dialecticus

5

Ajoutez les attributs suivants à la propriété dans votre contrôle:

[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 
0

Un léger changement à la réponse de Erik J'utilise VS 2013.

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 
public new string Name { 
    get; 
    set; 
} 
+1

Mon nom de la propriété à "Nom" était malheureux. Il aurait été préférable de le nommer quelque chose de différent puisque tous les contrôles ont déjà une propriété Name. C'est la raison pour laquelle vous devez utiliser le nouveau mot-clé pour masquer la propriété de la classe de base. :) –

+0

Oui, je suis tombé sur moi-même depuis la réponse. – peterincumbria

+0

Comme mentionné par Erik lui-même cette réponse, n'ajoute rien à nouveau à la question réelle – TheLethalCoder