Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Remove GenerateMember and Modifiers Properties in Designer

I created a Button descendant where I hide all the properties I don't use.

I do it like this:

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

Most properties get correctly hidden and cannot be used.

However there are two properties that I cannot get rid of.

enter image description here

Is there a way to also remove GenerateMember and Modifiers in the Designer?

like image 266
Thomas Avatar asked Jul 26 '16 06:07

Thomas


1 Answers

You can create a new ControlDesigner for your control and override its PostFilterProperties method. The method lets you to change or remove the items within the dictionary of properties.

The keys in the dictionary of properties are the names of the properties. Although Modifiers and GenerateMember are not actual properties of your control and they are design-time properties, you can still remove them this way:

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");
   }
}

To hide properties in property grid, Instead of overriding or shadowing them, you can do the same thing for them.

like image 90
Reza Aghaei Avatar answered Sep 17 '22 16:09

Reza Aghaei