用于控制阴影属性的自定义categoryattribute

时间:2014-01-13 17:34:02

标签: vb.net propertygrid

我制作了一个自定义的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,属性网格不会显示相同的结果。有时它会被置于旧的类别之下,有时是新的本地化类别。

我完全不知所措,因为它太随机了。有人可以帮忙吗?

1 个答案:

答案 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