Supprimer les propriétés GenerateMember et Modifiers dans Designer

J’ai créé un descendant de Button où je cache toutes les propriétés que je n’utilise pas.

Je le fais comme ça:

[Browsable(false)] [Bindable(false)] [EditorBrowsable(EditorBrowsableState.Never)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [Obsolete("", true)] public new Boolean AllowDrop { get; set; } 

La plupart des propriétés sont correctement masquées et ne peuvent pas être utilisées.

Cependant, il y a deux propriétés que je ne peux pas me débarrasser.

entrez la description de l'image ici

Est-il possible de supprimer GenerateMember et les modificateurs également dans Designer?

Vous pouvez créer un nouveau ControlDesigner pour votre contrôle et remplacer sa méthode PostFilterProperties . La méthode vous permet de modifier ou de supprimer les éléments du dictionnaire de propriétés.

Les clés dans le dictionnaire des propriétés sont les noms des propriétés. Bien que Modifiers et GenerateMember ne soient pas des propriétés réelles de votre contrôle, ce sont des propriétés de conception, mais vous pouvez les supprimer de cette façon:

 using System.Windows.Forms; using System.Windows.Forms.Design; [Designer(typeof(MyCustomControlDesigner))] public class MyCustomControl:Button { } public class MyCustomControlDesigner:ControlDesigner { protected override void PostFilterProperties(System.Collections.IDictionary properties) { base.PostFilterProperties(properties); properties.Remove("Modifiers"); properties.Remove("GenerateMember"); } } 

Pour masquer les propriétés dans la grid de propriétés, au lieu de les remplacer ou de les ombrer, vous pouvez faire la même chose pour elles.

Je ne pense pas que vous puissiez le supprimer car il ne s’agit pas d’une propriété de classe, mais d’une propriété de conception, utilisée uniquement par le concepteur:

Si vous avez joué avec les versions Whidbey de Visual Studio, vous avez peut-être remarqué cette nouvelle propriété appelée GenerateMember, qui apparaît dans la grid de propriétés pour tous les contrôles et composants que vous ajoutez à un Windows Form. Vous vous demandez de quoi il s’agit? Il s’agit en réalité d’une propriété d’extension de conception qui vous permet de contrôler si un composant ajouté à la fiche est référencé par une variable membre de la classe ou une variable locale dans InitializeComponent. Par défaut, il est défini sur true, mais si vous avez des composants que vous ne référencez pas réellement en dehors de InitializeComponent, vous pouvez le définir sur false. De cette façon, vous pouvez limiter les variables de membre de votre classe aux composants pour lesquels vous avez réellement besoin de variables de membre – juste quelque chose pour éviter l’encombrement.

Il en va de même pour les Modifiers et les Locked .