【问题标题】:How to save ComboBox items in My.Settings, and display/edit with textbox如何在 My.Settings 中保存 ComboBox 项目,并使用文本框显示/编辑
【发布时间】:2011-03-16 14:21:50
【问题描述】:

我正在尝试执行以下操作:

  1. 将 ComboBox 中的项目存储在 My.Settings 中(数据类型无关紧要,但需要建议)。
  2. 检索这些项目以在表单加载时填充 ComboBox。
  3. 还在 TextBox 中显示这些项目(每行 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

但此代码不会正确保存值,或在组合框或文本框中正确显示它们。

【问题讨论】:

标签: vb.net configuration combobox my.settings


【解决方案1】:

您可以使用 StringCollection 类型进行设置,您可能需要在代码中使用以下导入语句才能使用 StringCollection:Imports System.Collections.Specialized

然后您可以将此 StringCollection 用作组合框的数据源。

编辑:在您的代码中看到您已经使用了 StringCollection。好的。现在你为什么不这样访问你的设置?

My.Settings.Items = itemCollection

这样您就可以确保不会输入错误,并且您还可以确定您的设置确实存在。您是否还尝试单步执行代码以检查您的设置是否实际保存?

【讨论】:

  • 想一想,他想在电脑上存储并从电脑中检索。因此表单加载。
  • @Meta-Knight- 我已经逐步完成了代码,并且 Save() 不会引发任何错误。我应该如何正确地将 cbo 项目保存到 My.Settings 中?
  • @Meta-Knight- 此语法不起作用,因为 My.Settings.[settingName] 是只读属性。
  • 当您通过属性页面配置设置时,您是否选择了 StringCollection 作为类型和 User 作为范围?
  • StringCollection 是,Application 是作用域。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多