Search code examples
c#winformsdevexpressxtragrid

Winforms can't set Property-Values at design-time


Iam trying to create a own GridControl based on a DevExpress Grid (v.14.2). This seems to work well, but my Settings-Object isn't editable in Designer.

This is my Grid so far:

    [ToolboxItem(true)]
    [DXToolboxItem(true)]
    public class MyGrid : GridControl
    {
        private Settings _settings;

        public MyGrid()
        {
            _settings= new Settings();
        }

        [Category("My Category")]
        [Description("My Description")]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
        public Settings Settings
        {
            get { return _settings; }
            set { _settings = value; }
        }
}

And this is my Settings-Class:

    [EditorBrowsable(EditorBrowsableState.Always)]
    public class Einstellungen
    {
        [Category("My Category")]
        [Description("My Description")]
        public bool CanGroup { get; set; }

        [Category("My Category")]
        [Description("My Description")]
        public bool IsEditable { get; set; }
}

Is there any Attribute which iam missing? Searched on msdn but they also just recommend the used attributes...

In the Designer i just can see: Settings | MyNamespace.Settings but no way to edit the bool Properties.


Solution

  • Perhaps this works...

    [TypeConverter(typeof(ExpandableObjectConverter))]
    [EditorBrowsable(EditorBrowsableState.Always)]
    public class Einstellungen
    {
        [Category("My Category")]
        [Description("My Description")]
        [Browsable(true)]
        [EditorBrowsable(EditorBrowsableState.Advanced)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
        public bool CanGroup { get; set; }
    
        [Category("My Category")]
        [Description("My Description")]
        [Browsable(true)]
        [EditorBrowsable(EditorBrowsableState.Advanced)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
        public bool IsEditable { get; set; }
    }