Masquage des propriétés indésirables dans les contrôles personnalisés
Est-ce la manière de masquer les propriétés dans la dérivée de contrôle?
public class NewButton : Button
...
[Browsable ( false )]
public new ContentAlignment TextAlign { get; set; }
Aussi ce masque la propriété dans la fenêtre des Propriétés dans le concepteur, mais comment puis-je cacher la propriété dans le code?
source d'informationauteur Joan Venge
Vous devez vous connecter pour publier un commentaire.
De code, le plus proche que vous pouvez faire pour le cacher, et peut-être une douleur d'appeler directement - à noter que même caché il est exigible, et rien de cela fonctionnera passé un casting:
Personnellement, je ne voudrais pas les déranger. Il n'est pas robuste (jeter).
Vous pouvez utiliser le
[EditorBrowsable]
attribut, comme documenté ici.À partir de la documentation:
Cependant, les utilisateurs peuvent modifier ce en VS paramètres. ReSharper a aussi un paramètre qui contrôle si cet attribut est à l'honneur dans son IntelliSense.
Par curiosité, pourquoi voulez-vous quelque chose à cacher des utilisateurs? Juste parce qu'un membre est caché dans la manière décrite ci-dessus ne signifie pas que vous ne pouvait pas l'utiliser dans le code et le compiler avec succès. Il a juste inhibe la découverte du membre.
Pas, vous pouvez les supprimer à partir du concepteur (comme indiqué), mais vous ne pouvez pas vraiment cacher le code du formulaire car ce serait violer le principe de substitution. Il a été demandé & a répondu à de nombreuses reprises ici, voir par exemple cette SORTE de question.
Peut-être ce que vous voulez faire est de dériver de ContainerControl ou UserControl, ajouter un Bouton pour que le contrôle et la juste exposer les parties de l'interface de Bouton que vous souhaitez conserver.
Pourquoi ne pas vous rendre privé? Il garantit que les ancêtres ne le verra pas.
Edit:
Dans ce cas, vous devez hériter d'une nouvelle classe à partir de la base et l'utilisation de votre nouvelle classe, qui cache maintenant le ths de la propriété.