Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
470 views
in Technique[技术] by (71.8m points)

c# - 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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...