How Do I Avoid Merged Properties in the Property Grid?

Under normal circumstances, when you select multiple controls on a Web page, the property grid for the designer, like Visual Studio .NET or the Web Matrix, shows an intersection of the properties of the controls you selected. That is, it merges the properties that exist in all the controls and shows them in the grid as one property. This is often very useful as it allows you to quickly set the properties of a lot of controls to the same values, like the font for example.

However, this is probably not useful for all the properties of your control. Properties like the ID, the Name or any other property that needs to be unique throughout your control collection, should not participate in this "merge of properties ". Preventing your property from being merged is easy though; just apply the MergablePropertyAttribute:

  /// <summary>
  /// The UserName defines the Name of the user 
  /// and needs to be unique throughout the page.
  /// </summary>
  [
    Browsable(false),
    MergableProperty(false)
  ]
  public string UserName
  {
    get
    {
      return userName;
    }
  }
Now when you select multiple controls that have a UserName, that property will not show up in the property grid.

Where to Next?

Wonder where to go next? You can read existing comments below or you can post a comment yourself on this article .


Consider making a donation
Please consider making a donation using PayPal. Your donation helps me to pay the bills so I can keep running Imar.Spaanjaars.Com, providing fresh content as often as possible.



Feedback by Other Visitors of Imar.Spaanjaars.Com

On Monday, October 18, 2004 8:28:16 AM Yggy said:
Information is correct, and useful if you're wading through MSDN without finding what you want.

Here's a followup question -- what if I want the property grid to show a union of all the properties instead of an intersection? i.e. display all the properties of all SelectedObjects, with no merging?

many thanks,
yggy
On Tuesday, October 19, 2004 7:13:26 PM Imar Spaanjaars said:
I don't think this can be done automatically. VS.NET has built-in support for the merging of the properties, but AFAIK, there is no support for a union.

However, I do believe the Property Grid is a control that itself can be overridden, so maybe someone else has already extended the class with the desired behavior.....
On Tuesday, March 08, 2011 10:02:58 AM raghu said:
Hi
I've got here a simple PropertyGrid on my Form.
And there is an Array with n-Objects of simple Class with n
Attributes.

I used the Code of the following Article to localize all the
Properties, Descriptions, Categories... this works well if I use the
SelectedObject-Property of the PropertyGrid!
http://www.codeproject.com/cs/miscctrl/GlobalizedPropertyGrid.asp?df=...

But if I try the SelectedObjects-Property, the PropertyGrid will not
show the Categories... it displays only the Misc-Category instead of
my own 3 Categories.

And the other Problem is, the PropertyGrid sort the Properties not by
the DisplayName. it use the Name to sort all the Properties.

Anybody know a Workaround for this two Problems?

On Tuesday, March 08, 2011 2:16:00 PM Imar Spaanjaars said:
Hi there,

Hard to say wiithout seeing your code. May I suggest you post this on a forum?

Cheers,

Imar

Talk Back! Comment on Imar.Spaanjaars.Com

I am interested in what you have to say about this article. Feel free to post any comments, remarks or questions you may have about this article. The Talk Back feature is not meant for technical questions that are not directly related to this article. So, a post like "Hey, can you tell me how I can upload files to a MySQL database in PHP?" is likely to be removed. Also spam and unrealistic job offers will be deleted immediately.

When you post a comment, you have to provide your name and the comment. Your e-mail address is optional and you only need to provide it if you want me to contact you. It will not be displayed along with your comment. I got sick and tired of the comment spam I was receiving, so I have protected this page with a simple calculation exercise. This means that if you want to leave a comment, you'll need to complete the calculation before you hit the Post Comment button.

If you want to object to a comment made by another visitor, be sure to contact me and I'll look into it ASAP. Don't forget to mention the page link, or the QuickDocId of the document.

For more information about the Talk Back feature, check out this news item.