Comment enregistrer des éléments dans ComboBox My.Settings et affichage / modifier avec zone de texte
-
25-10-2019 - |
Question
Je suis en train de faire ce qui suit:
- Stocker les articles de ComboBox dans My.Settings (type de données n'a pas d'importance, mais les suggestions de besoin).
- Récupérer ces éléments pour remplir une zone de liste déroulante sur formload.
- afficher ces éléments (1 élément par ligne) dans TextBox, où je peux modifier et enregistrer les modifications à la fois My.Settings et ComboBox.
Je suis un peu perdu, comment dois-je faire de manière?
code existant:
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
Mais ce code ne sauvera pas les valeurs correctement, ou les afficher correctement dans la zone de liste déroulante ou zone de texte.
La solution
Vous pouvez utiliser un type StringCollection pour votre configuration, vous devrez peut-être la déclaration des importations suivantes dans votre code pour le StringCollection être disponible: Imports System.Collections.Specialized
Vous pouvez ensuite utiliser ce StringCollection comme source de données pour la zone de liste déroulante.
Modifier Saw dans votre code que vous utilisez déjà StringCollection. Bien. Maintenant, pourquoi ne pas vous accédez à votre cadre comme celui-ci?
My.Settings.Items = itemCollection
De cette façon, vous êtes sûr de ne pas faire une erreur de frappe, et vous êtes aussi sûr que vous paramètre existe réellement. Aussi avez-vous essayez parcourant le code pour vérifier si votre configuration est effectivement enregistrée ou non?