2014-01-13 124 views
0

为了本地化自定义控件的属性,我做了一个自定义的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”类别将出现,有时旧的“布局”一个会。只有阴影属性有这种奇怪的行为。这完全是随机的。这也不是一个编译的事情。您可以连续两次启动.exe,并且属性网格不会显示相同的结果。有时它会被置于旧的范畴之下,有时也会被置于新的本地范畴之下。

我完全不知所措,因为它是如此随机。谁能帮忙?

回答

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