Search code examples
c#winformsstructpropertiesdesigner

How to let C# designer edit my struct property?


I am creating a custom Windows Forms control in C# with several custom properties. One of those properties is a simple struct with several integral fields:

public struct Test
{
    public int A, B;
}

Test _Test;

[Category("MyCategory")]
public Test TestProperty
{
    get { return _Test; }
    set { _Test = value; }
}

I want the Visual Studio designer to edit the fields of my structure the same way as it does for Size, Margins and other similar Windows Forms structures. Do I need to implement a custom property editor based on UITypeEditor class, or is there some common "structure editor" provided by .Net framework?


Solution

  • This should do the trick:

    [TypeConverter(typeof(ExpandableObjectConverter))]
    public struct Test
    {
        public int _A, _B;
        public int B
        {
            get { return _B; }
            set { _B = value; }
        }
        public int A
        {
            get { return _A; }
            set { _A = value; }
        }
    }
    
    Test _Test;
    
    [Category("MyCategory")]
    public Test TestProperty
    {
        get { return _Test; }
        set { _Test = value; }
    }