我制作了一个自定义的CategoryAttribute,以便本地化自定义控件的属性。
<AttributeUsage(AttributeTargets.Property)> _
Public Class LocalisableCategoryAttribute
Inherits CategoryAttribute
Public Sub New(ByVal resourceName As String)
MyBase.New(resourceName)
End Sub
Protected Overrides Function GetLocalizedString(value As String) As String
Return My.Resources.ResourceManager.GetString(value)
End Function
End Class
我的自定义控件具有此属性的两个全新属性,但我还隐藏了一些“基本”属性(例如“大小”和“位置”),以便为它们提供此属性。
<LocalisableCategory("Category_Apparence")> _
Public Shadows Property Size As Size
Get
Return MyBase.Size
End Get
Set(value As Size)
MyBase.Size = value
End Set
End Property
最大的问题是,在运行时,有时会显示新的“Apparence”类别,有时会出现旧的“Layout”类别。只有阴影属性才有这种奇怪的行为。这完全是随机的。它也不是编译器。您可以连续两次启动.exe,属性网格不会显示相同的结果。有时它会被置于旧的类别之下,有时是新的本地化类别。
我完全不知所措,因为它太随机了。有人可以帮忙吗?
答案 0 :(得分:0)
你必须改变:
<AttributeUsage(AttributeTargets.Property)> _
Public Class LocalisableCategoryAttribute
Inherits CategoryAttribute
Private resourceKey As String
Public Sub New(ByVal resourceName As String)
resourceKey = resourceName
End Sub
Protected Overrides Function GetLocalizedString(value As String) As String
Return My.Resources.ResourceManager.GetString(resourceKey)
End Function
End Class