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