Visual Studio 2019 (vb) - проблема с чтением / записью My.Settings - PullRequest
0 голосов
/ 02 мая 2020

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

Моя цель - провести серию из ComboBoxes, которые содержат несколько строк, например, строка является этой, ComboBox называется TYPE:

ComboboxTYPE

Я хранить эти строки в My.Settings для моего удобства и редактировать их непосредственно из файла app.exe.config (эта информация хранится там, верно?).

Я использую этот код

Private Sub AdminPanel_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        For Each item In My.Settings.TYPE
            ComboBoxType.Items.Add(item)
        Next
End Sub

Моя проблема в том, что я не могу читать с My.Settings.TYPE, и когда я пытаюсь записать в него следующий код, я не вижу ни строк, ни добавленных в меню My.Settings, ни в app.exe.config.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles ButtonTYPEAddValue.Click
        ComboBoxType.Items.Add(TextBoxType.Text)
        ComboBoxType.Text = TextBoxType.Text
        TextBoxType.Clear()
        MsgBox("Item added!")
End Sub

что не так?

1 Ответ

1 голос
/ 02 мая 2020

В вашем коде кажется, что вы использовали String для добавления / удаления ComboBoxType элементов. Следуйте инструкциям, чтобы выполнить ваши требования:

На этом снимке экрана вы можете видеть, что я установил тип как System.Collection.Specialized.StringCollection, чтобы отделить его каждый раз для будущего использования.

Items Collection

Теперь вы можете использовать следующий код:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    My.Settings.tests.Add(TextBox1.Text)
    My.Settings.Save()
    ComboBox1.Items.Add(TextBox1.Text)
End Sub

Private Sub AdminPanel_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    For Each item In My.Settings.tests
        ComboBox1.Items.Add(item)
    Next
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    My.Settings.tests.Remove(TextBox1.Text)
    My.Settings.Save()
    ComboBox1.Items.Remove(TextBox1.Text)
End

Заметно, что вы можете изменить имена переменных, они немного отличаются от ваших в мой код.

Структура формы для кода:

Default form

В событии MyBase.Load все элементы, содержащие в My.Settings.tests будет добавлено с помощью For Each l oop (преимущество StringCollection).

Рабочий пример формы [добавление - удаление с помощью My.Settings]:

Adding to menu Removing from menu

Надеюсь, вы получили ответ.

...