【问题标题】:How to show the constant for the property instead of value如何显示属性的常量而不是值
【发布时间】:2010-12-14 10:51:54
【问题描述】:

你好 我在 VB.Net 2010 框架 2.0 中工作。 假设我声明了一个属性:

Dim NewColor As Color = Color.FromArgb(150, 145, 145)

Private _myColor As Color = NewColor 
Public Property MyColor() As Color
    Get
        Return _myColor
    End Get
    Set(ByVal value As Color)
        _myColor = value
    End Set
End Property

在表单设计器中,属性“MyColor”将被视为值 150、145、145。我想在表单设计器中将此值视为“NewColor”。 这与 ControlDark、ActiveBorder 等系统颜色相同。我希望设计师应该显示变量名称而不是颜色值。 .Net 框架也将上述实现用于系统颜色和我想做的一样。

感谢您提前回复。

【问题讨论】:

    标签: .net visual-studio colors designer systemcolors


    【解决方案1】:

    这是可能的,但并不容易。

    您应该定义自己的类型,可能在浏览器中隐藏当前属性,使用<Browsable(False)> 属性,并创建一个属于您自己类型的影子属性。这种类型应该知道它什么时候“指向”一个变量,或者它本身有颜色。

    在新类型上,您应该覆盖 ToString,以返回您想要显示的内容。并创建您自己的编辑器。更多信息请查看EditorAttribute。

    您可以像 Color 一样创建一个下拉列表,其中包含一个列出变量的额外选项卡。

    如果你不想创建额外的属性(这是糟糕的OO),你也可以在类上定义一个TypeConverter,并指定每个属性以及如何表现自己。

    顺便说一句:Color 结构存储 KnownColor 值(Color.Red 或 SystemColor.WindowText)或 RGB 值。这样它就知道它指向一个已知的颜色。您的结构还应该知道它是指向变量(以及什么变量)还是 System.Color。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-09
    • 2020-04-28
    • 2015-03-31
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    相关资源
    最近更新 更多