为什么在属性控件中不会显示已知颜色?

时间:2017-02-14 17:01:27

标签: vb.net winforms

我正在处理我的应用程序的自定义设置。我创建了一个类,它将所有设置保存为属性网格中显示的公共属性。使用自定义函数对数据库进行set / get写入和读取。这一切都很适合我的需求。我在显示颜色方面遇到麻烦,就像我认为它们应该在属性网格中显示一样。即使已知颜色,属性网格也仅使用RGB值。

有没有办法让属性网格显示已知颜色而不是RGB值?

这是我的设置类中的属性。

    <CategoryAttribute("Signature Capture"), _
    DescriptionAttribute("Sets the Pen color"), _
    DisplayName("PenColor"), _
    BrowsableAttribute(True), _
    ReadOnlyAttribute(False), _
    DefaultValueAttribute(GetType(Color), "Black"), _
    RefreshProperties(RefreshProperties.All)> _
    Public Property SignatureCapturePenColor() As Color
        Get
            Dim myset As New mySettings
            Return Color.FromArgb(Convert.ToInt32(myset.GetSetting("SignatureCapturePenColor", mySettings.e_Scope.Tech)))
        End Get
        Set(ByVal value As Color)
            Dim myset As New mySettings
            myset.SetSetting("SignatureCapturePenColor", value.ToArgb, mySettings.e_Scope.Tech)
            Dim ncSet As New ncSettings
            ncSet.NotifyPropertyChanged()
        End Set
    End Property

这是属性网格的示例:

Property Grid

这应该显示为“黑色”而不是“0,0,0”。

这甚至可能吗?

如果需要,我可以发布更多代码或解释更多代码。这是我的第一个问题,所以请放轻松我...

1 个答案:

答案 0 :(得分:1)

您正在使用ARGB值来存储和返回颜色,以便&#34;认为&#34;您正在尝试定义自定义颜色。

使用并保存颜色名称..

 Public Property SignatureCapturePenColor() As Color
    Get
        Dim myset As New mySettings
        Return Color.FromName(myset.GetSetting("SignatureCapturePenColorName", mySettings.e_Scope.Tech))
    End Get
    Set(ByVal value As Color)
        Dim myset As New mySettings
        myset.SetSetting("SignatureCapturePenColorName", value.Name, mySettings.e_Scope.Tech)
        Dim ncSet As New ncSettings
        ncSet.NotifyPropertyChanged()
    End Set
End Property