COMPECEMENT COMPÉTENCE CUSTÉ ne déclenche jamais la méthode «set» d'une propriété
-
12-11-2019 - |
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