VB.NET Попытка прочитать System.Collections.Specialized.StringCollection в My.Settings возвращает InvalidOperationException

В моем проекте vb.net я создал следующие настройки с помощью встроенного менеджера настроек из Visual Studio:

  • appVisible (логическое)
  • saveFusedFiles (Boolean)
  • цвета (System.Collections.Specialized.StringCollection)
  • разделители (System.Collections.Specialized.StringCollection)

При попытке прочитать "цвета" или "разделители" я получаю исключение InvalidOperationException, но чтение логических переменных работает.

В моем файле конфигурации я не могу найти мои переменные System.Collections.Specialized.StringCollection...

Насколько я знаю, экземпляры переменных настроек создаются автоматически, поэтому это не должно быть проблемой.

Это конструктор, где я читаю настройки:

Public Sub New()

    ' This call is required by the Windows Form Designer.
    InitializeComponent()

    ' Add any initialization after the InitializeComponent() call.

    My.Settings.Reload()

    'INIT Separators

    If Not ListView_Separators.Items.Count = 0 Then
        ListView_Separators.Items.Clear()
    End If

    If My.Settings.separators.Count = 0 Then
        My.Settings.separators.Add(",")
        GenerateListViewItem(",")
    Else
        For Each seperator As String In My.Settings.separators
            GenerateListViewItem(seperator)
        Next
    End If
    Button_Add.Enabled = False
    Button_Delete.Enabled = False

    'INIT Colors

    If DataGridView_Colors.Rows.Count > 0 Then
        DataGridView_Colors.Rows.Clear()    'Clear DataGridView
    End If
    For Each color As String In My.Settings.colors  'Add all Colors to DataGridView
        'Add to DataGridView
        Dim splitedColor As String() = New String(1) {1, 1}
        splitedColor = color.Split("_")
        Dim contentText As String
        Select Case splitedColor(1)
            Case 0
                contentText = "New component"
            Case 1
                contentText = "Removed component"
            Case 2
                contentText = "Changed Data"
        End Select
        Dim arrDataGridRow As String() = New String(1) {splitedColor(0), contentText}
        DataGridView_Colors.Rows.Add(arrDataGridRow)
        Dim dgwStyle As New DataGridViewCellStyle
        dgwStyle.ForeColor = Drawing.Color.FromName(splitedColor(0))
        DataGridView_Colors.Rows(DataGridView_Colors.Rows.Count - 1).Cells(0).Style = dgwStyle
    Next

    'INIT View

    If My.Settings.appVisible = True Then
        Checkbox_Visable.Checked = True
    Else
        Checkbox_Visable.Checked = False
    End If

End Sub

My.Settings.separators.Count генерирует исключение.

Кто-нибудь знает, как с этим справиться?

1 ответ

Решение

Я думаю, что это отвечает, почему вы не видите коллекцию в вашем конфигурационном файле.

/questions/45187446/dobavlenie-elementov-v-mysettings-stringcollection/45187453#45187453

Но этот ответ на тот же вопрос кажется лучшим решением.

/questions/45187446/dobavlenie-elementov-v-mysettings-stringcollection/45187458#45187458

Другие вопросы по тегам