Custom CollectionEditor non attiva mai il metodo "SET" di una proprietà
-
12-11-2019 - |
Domanda
Sto cercando di implementare un modo per persistere una raccolta in una classe di impostazioni personalizzate. Ho creato correttamente la classe Impostazioni (ereditarietà ApplicationSettingSbase) e posso salvare le proprietà utilizzando gli editori integrati su una proprietà di proprietà, ma la mia implementazione personalizzata di una griglia di proprietà per le raccolte non persistono nessuno dei valori che aggiungo. Ecco il mio codice:
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
Ho impostato un punto di interruzione sui metodi impostati sia per la proprietà BackgroundColor che per la proprietà Email Addresses. La proprietà di BackgroundColor funziona come dovrebbe: si rompe sull'istruzione impostata e memorizza correttamente la proprietà. Ma quando chiudo la finestra di dialogo CollectionEditor personalizzate, il metodo "Set" di email ha mai chiamato. Come posso convincere il mio editor personalizzato a salvare effettivamente la proprietà una volta che è stata modificata?
Nessuna soluzione corretta