Кажется, я это исправил (с помощью этот вопрос ).Я добавил переопределение к функции EditValue в своем редакторе.Вот код:
Public Overrides Function EditValue(ByVal context As System.ComponentModel.ITypeDescriptorContext, ByVal provider As System.IServiceProvider, ByVal value As Object) As Object
Dim result As Object = MyBase.EditValue(context, provider, value)
DirectCast(context.Instance, CustomSettings).EmailAddresses = DirectCast(result, List(Of String))
Return result
End Function
Я также перешел из коллекции в список - я где-то читал, что это был более безопасный путь.Я также добавил конструктор в свой класс CustomSettings, который устанавливает свойство EmailAddresses в новый List (Of String), если он не был установлен с самого начала.Я обнаружил, что при первом запуске я мог редактировать список и добавлять элементы, но они не сохранялись бы:
Public Sub New()
If Me("EmailAddresses") Is Nothing Then
Me("EmailAddresses") = New List(Of String)
End If
End Sub
И теперь все работает так, как должно.Но если это не лучший способ или есть более простой способ сделать это, пожалуйста, включите.