Используйте ProvideProperty в качестве объекта - PullRequest
0 голосов
/ 27 ноября 2011

Я хотел бы использовать класс, который ProvideProperty, как объект внутри диспетчера, но, кажется, я не могу использовать его, когда свойство является объектом. Строка работает хорошо.

Я могу установить и получить в коде, но не в дизайнере.

Большое спасибо

Мой код:

Imports System.Windows.Forms
Imports System.ComponentModel

<ProvideProperty("Champ", GetType(Control))> _
<ProvideProperty("Valeur", GetType(Control))> _
<ProvideProperty("Comparaison", GetType(Control))> _
Public Class ProprietesEtendues
    Implements IExtenderProvider

    Public Enum CompareType
        Egal
        Different
        PlusGrand
        PlusGrandEgal
        PlusPetit
        PlusPetitEgal
    End Enum

    Private _champ As New Dictionary(Of IntPtr, String)
    Private _val As New Dictionary(Of IntPtr, Object)
    Private _comp As New Dictionary(Of IntPtr, CompareType)

    'Propriété Comparaison
    Public Function GetChamp(ByVal c As Control) As String
        Dim strRetour As String = ""
        _champ.TryGetValue(c.Handle, strRetour)
        Return strRetour
    End Function

    <DefaultValue(""), Category("Data"), Description("Ajoute une propriété de type String")> _
    Public Sub SetChamp(ByVal c As Control, ByVal value As String)
        _champ(c.Handle) = value
    End Sub

    'Propriété Valeur
    Public Function GetValeur(ByVal c As Control) As Object
        Dim objRetour As Object = ""
        _val.TryGetValue(c.Handle, objRetour)
        Return objRetour
    End Function

    <DefaultValue(""), Category("Data"), Description("Ajoute une propriété de type Object")> _
    Public Sub SetValeur(ByVal c As Control, ByVal value As Object)
        _val(c.Handle) = value
    End Sub

    'Propriété Comparaison
    Public Function GetComparaison(ByVal c As Control) As CompareType
        Dim ctRetour As CompareType = CompareType.Egal
        _comp.TryGetValue(c.Handle, ctRetour)
        Return ctRetour
    End Function

    <DefaultValue(CompareType.Egal), Category("Data"), Description("Ajoute une propriété de type CompareType")> _
    Public Sub SetComparaison(ByVal c As Control, ByVal value As CompareType)
        _comp(c.Handle) = value
    End Sub

    Public Function CanExtend(ByVal target As [Object]) As Boolean Implements IExtenderProvider.CanExtend
        Return True
    End Function
End Class

1 Ответ

1 голос
/ 28 ноября 2011

Обычно вы можете поместить хотя бы строку, например свойство Tag

Если строка достаточно хорошая, вы можете применить атрибут [TypeConverter]:

<TypeConverter(GetType(StringConverter))> _
Public Function GetValeur(ByVal c As Control) As Object
    Dim objRetour As Object = ""
    _val.TryGetValue(c.Handle, objRetour)
    Return objRetour
End Function

<DefaultValue(""), Category("Data"), Description("Ajoute une propriété de type Object")> _
<TypeConverter(GetType(StringConverter))> _
Public Sub SetValeur(ByVal c As Control, ByVal value As Object)
    _val(c.Handle) = value
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...