【问题标题】:How to let C# designer edit my struct property?如何让 C# 设计器编辑我的结构属性?
【发布时间】:2011-08-30 23:27:22
【问题描述】:

我正在 C# 中创建一个具有多个自定义属性的自定义 Windows 窗体控件。其中一个属性是一个具有多个完整字段的简单结构:

public struct Test
{
    public int A, B;
}

Test _Test;

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

我希望 Visual Studio 设计器像编辑 SizeMargins 和其他类似的 Windows 窗体结构一样编辑我的结构的字段。是否需要实现基于UITypeEditor类的自定义属性编辑器,还是.Net框架提供了一些常用的“结构编辑器”?

【问题讨论】:

  • 而不是将您的标题更新为已解决,您应该添加自己的答案,如果它是最好的,请将其标记为已接受的答案。这将比简单地编辑您的问题更能帮助将来遇到同样问题的其他人。它还将把它从“未回答”列表中删除,我们中的许多人都会去那里寻找有问题我们可以帮助解决的人。
  • 试过了。收到一条消息“新用户必须等待 8 小时才能回答自己的问题”。
  • @sharp 您不需要回答您的问题,但请查看最有用的答案
  • @sharp - 您无需将标题编辑为 solved,只需等待 8 小时结束,然后将其添加为答案,然后等待任何停顿期在将其标记为答案之前。
  • @slugster 做这么简单的事情好像挺麻烦的。等待并回到它 2 次绝对不是我想要做的。我可以手动关闭或删除问题而不会出现这些问题吗?

标签: c# winforms struct properties designer


【解决方案1】:

这应该可以解决问题:

[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; }
}

【讨论】:

  • 不起作用,将 [Serializable] 应用于结构声明是一种解决方法。
【解决方案2】:

您需要创建自己的设计师。 http://msdn.microsoft.com/en-us/magazine/cc164048.aspx

【讨论】:

    猜你喜欢
    • 2011-04-12
    • 2020-03-21
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多