Make a property visible in DataGridView but NOT in PropertyGrid?

后端 未结 1 772
再見小時候
再見小時候 2020-12-17 01:47

Let\'s say I have a property which I want shown in a DataGridView, but not when the same object is shown in a PropertyGrid. I know I can use [Browsable(false)]

相关标签:
1条回答
  • 2020-12-17 02:31

    it is possible to solve this issue by using the BrowsableAttributes property of a PropertyGrid. First, create a new attribute like this:

    public class PropertyGridBrowsableAttribute : Attribute
    {
        private bool browsable;
        public PropertyGridBrowsableAttribute(bool browsable){
            this.browsable = browsable;
        }
    }
    

    Then add this attribute to all those properties which you want to be shown in your PropertyGrid:

    [DisplayName("First Name"), Category("Names"), PropertyGridBrowsable(true)]
    public string FirstName {
        get { return ... }
        set { ... }
    }
    

    Then set the BrowsableAttributes property like this:

    myPropertyGrid.BrowsableAttributes = new AttributeCollection(
        new Attribute[] { new PropertyGridBrowsableAttribute(true) });
    

    This will only show the attributed properties in your property grid and the DataGridView can still access all properties with only a little bit more coding effort.

    I would still go with Tergiver and call this behaviour a bug, since the documentation of the Browsable attribute clearly states its use for property windows only.

    (Credit goes to user "maro" at http://www.mycsharp.de/wbb2/thread.php?postid=234565)

    0 讨论(0)
提交回复
热议问题