사용자 지정 설정 클래스에서 컬렉션을 유지하는 방법을 구현하려고합니다. 나는 성공적으로 설정 클래스 (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"메서드가 호출되지 않습니다. 편집이 끝나면 내 사용자 정의 편집기에서 실제로 속성을 저장하도록하려면 어떻게해야합니까?