2014-01-13 1 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"카테고리가 나타나고 때로는 오래된 "Layout"이 표시된다는 것입니다. 그림자 처리 된 속성 만이 이상한 동작을합니다. 그것은 완전히 무작위입니다. 그것은 컴파일 작업이 아닙니다. .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