2014-01-13 78 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