カスタム設定クラスでコレクションを永続化する方法を実装しようとしています。私は正常に設定クラス(ApplicationSettingsBaseを継承)を作成し、PropertyGridのビルトインエディタを使用してプロパティを保存できますが、コレクションのプロパティグリッドの私のカスタム実装は、私が追加する値を保持しません。私のコードは次のとおりです:カスタムCollectionEditorは、プロパティの「set」メソッドをトリガーしません。
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
BackgroundColorプロパティとEmailAddressesプロパティの両方のSetメソッドにブレークポイントを設定しました。 BackgroundColorプロパティは、必要に応じて動作します。Setステートメントでブレークし、プロパティを正しく格納します。しかし、カスタムのCollectionEditorダイアログを閉じると、EmailAddressesの "Set"メソッドが呼び出されることはありません。プロパティの編集が完了したら、カスタムエディタを実際に保存するにはどうすればよいですか?