如何让C#设计器编辑我的struct属性?

sha*_*arp 3 c# struct designer properties winforms

我在C#中使用多个自定义属性创建自定义Windows窗体控件.其中一个属性是一个带有几个整数字段的简单结构:

public struct Test
{
    public int A, B;
}

Test _Test;

[Category("MyCategory")]
public Test TestProperty
{
    get { return _Test; }
    set { _Test = value; }
}
Run Code Online (Sandbox Code Playgroud)

我希望Visual Studio设计器以与它相同的方式编辑结构的字段Size,Margins以及其他类似的Windows窗体结构.我是否需要基于UITypeEditor类实现自定义属性编辑器,或者.Net框架是否提供了一些常见的"结构编辑器"?

sha*_*arp 5

这应该做的伎俩:

[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; }
}
Run Code Online (Sandbox Code Playgroud)

  • 不起作用,将[Serializable]应用于struct声明是一种解决方法. (3认同)