Question

J'essaie d'implémenter un moyen de persister une collection dans un cours de paramètres personnalisés. J'ai créé avec succès la classe de paramètres (héritage d'applications enTtingSbase) et je peux enregistrer les propriétés à l'aide des éditeurs intégrés sur un PropertyGrid, mais mon implémentation personnalisée d'une grille de propriété pour les collections ne persiste aucune des valeurs que j'ajoute. Voici mon code:

Imports System.Configuration
Imports System.ComponentModel
Imports System.Drawing.Design
Imports System.ComponentModel.Design

Public Class CustomSettings
    Inherits ApplicationSettingsBase

    <UserScopedSetting()> _
    <DefaultSettingValue("White")> _
    Public Property BackgroundColor() As Color
        Get
            BackgroundColor = Me("BackgroundColor")
        End Get
        Set(ByVal value As Color)
            Me("BackgroundColor") = value
        End Set
    End Property

    <UserScopedSetting()> _
    <DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
    <Editor(GetType(CustomStringCollectionEditor), GetType(UITypeEditor))> _
    Public Property EmailAddresses() As Collection
        Get
            EmailAddresses = Me("EmailAddresses")
        End Get
        Set(ByVal value As Collection)
            Me("EmailAddresses") = value
        End Set
    End Property
End Class

Public Class CustomStringCollectionEditor
    Inherits CollectionEditor

    Public Sub New()
        MyBase.New(GetType(Collection))
    End Sub

    Protected Overrides Function CreateInstance(ByVal itemType As System.Type) As Object
        Return String.Empty
    End Function

    Protected Overrides Function CreateCollectionItemType() As System.Type
        Return GetType(String)
    End Function
End Class

J'ai défini un point d'arrêt sur les méthodes définies pour la propriété BackgroundColor et la propriété EmailAddress. La propriété BackgroundColor fonctionne comme elle le devrait - elle se casse sur l'instruction SET et stocke correctement la propriété. Mais lorsque je ferme la boîte de dialogue personnalisée CollectionDitor, la méthode EmailAddress "Set" n'est jamais appelée. Comment puis-je faire en sorte que mon éditeur personnalisé enregistre réellement la propriété une fois qu'il est réalisé en cours de modification?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top