Как сохранить элементы ComboBox в my.Settings и отображать/редактировать с помощью текстового поля.
-
25-10-2019 - |
Вопрос
Я пытаюсь сделать следующее:
- Храните элементы от ComboBox в my.Settings (DataType не имеет значения, но нуждается в предложениях).
- Получите эти элементы, чтобы заполнить ComboBox на загрузке формы.
- Также отобразите эти элементы (1 элемент на строку) в текстовом поле, где я могу редактировать и сохранить изменения как для my.settings, так и для Combobox.
Я немного потерян, как мне это сделать?
Существующий код:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Labels.LoadSettings()
txtNumOfLabels.Text = Labels.numOfLabels
cboItem.Items.Clear()
For Each s As String In Labels.items
cboItem.Items.Add(s)
Next
End Sub
Public Shared items As New Specialized.StringCollection
Shared Sub LoadSettings()
Try
items = My.Settings("Items")
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation)
End Try
End Sub
Private Sub Options_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
For Each s As String In Labels.items
txtItems.AppendText(s + Environment.NewLine)
Next
End Sub
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
Dim itemCollection As New Specialized.StringCollection
For Each s As String In txtItems.Lines
itemCollection.Add(s)
Next
My.Settings("Items") = itemCollection
My.Settings.Save()
Labels.LoadSettings()
Form1.cboItem.Items.Clear()
For Each s As String In Labels.items
Form1.cboItem.Items.Add(s)
Next
Me.Close()
End Sub
Но этот код не сохранит значения должным образом или правильно отобразит их в ComboBox или Textbox.
Решение
Вы можете использовать тип StringCollection для вашего настройки, вам может потребоваться следующее оператор Imports в вашем коде, чтобы stringCollection была доступна: Imports System.Collections.Specialized
Затем вы можете использовать эту StringCollection в качестве источника данных для ComboBox.
Редактировать: В своем коде видели, что вы уже используете StringCollection. Хороший. Теперь, почему бы вам не получить доступ к вашей настройке?
My.Settings.Items = itemCollection
Таким образом, вы уверены, что не совершаете ошибку печати, и вы также уверены, что настройки действительно существуют. Также вы пробовали пройти через код, чтобы проверить, действительно ли ваш настройка сохраняется или нет?