我已經爲PropertyGrid定義了一個類。其中兩個屬性是TextColor和TextFont。我無法直接或通過定義常量來設置它們的默認值。PropertyGrid - 如何設置屬性的默認顏色值
Private Const dTextColor As Color = Color.Black
不允許我設定值。設置默認字體常量的同樣問題。
我已經爲PropertyGrid定義了一個類。其中兩個屬性是TextColor和TextFont。我無法直接或通過定義常量來設置它們的默認值。PropertyGrid - 如何設置屬性的默認顏色值
Private Const dTextColor As Color = Color.Black
不允許我設定值。設置默認字體常量的同樣問題。
在.net中不能使用const
和color
。
用戶定義的類型,包括類,結構體和數組,不能是const。
詳情MSDN
在恆定聲明中指定必須爲sbyte,字節,短,USHORT,INT,UINT,長,ULONG,炭,浮點,雙精度,小數類型, bool,字符串,枚舉類型或引用類型。
而不是使用Private Const dTextColor As Color = Color.Black
您可以使用Private readonly dTextColor As Color = Color.Black
。
當屬性不是簡單類型時,您需要添加ShouldSerialize and Reset方法。這裏有一個例子,其中的默認值是Pink
:
Public Class Foo
Public Property TextColor As Color = Color.Pink
Private Function ShouldSerializeTextColor() As Boolean
Return (Me.TextColor <> Color.Pink)
End Function
Private Sub ResetTextColor()
Me.TextColor = Color.Pink
End Sub
End Class
雖然比約恩 - 羅傑的解決方案可能是最好的,你可以使用DefaultValue
屬性了。其中一個重載允許您指定哪種類型(System.Type
)的默認值是什麼以及默認值是多少。然而,「默認值」參數是一個字符串,但主系統類似乎能夠將其轉換爲正確的值。
<DefaultValue(GetType(Color), "Black")> _
Public Property TextColor As Color = Color.Black
爲什麼它需要是一個常量,如果它只是初始默認值? '公共屬性TextColor As Color = Color.Black'將正常工作。 – Plutonix
我實際上是先定義常量,然後在defaultvalue屬性中使用常量:DefaultValueAttribute(dTextColor)。使用ReadOnly dTextColor,從定義它中刪除了錯誤。但是,它不接受DefaultValueAttribut()中的只讀dTextcolor。 – gfxusr
http://stackoverflow.com/questions/25783386/overridden-forecolor-property-gets-reset-when-compiling/25786062#25786062 –