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.
Is there a way to also remove GenerateMember and Modifiers in the Designer?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With