0

我刚刚开始发展,所以有些概念我不清楚,我需要你试着理解我做错了什么。

我的目标是让一系列ComboBoxes包含一些字符串,例如一个字符串就是这个,ComboBox被称为TYPE

组合框类型

为了方便起见,我将这些字符串存储在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

怎么了?

4

1 回答 1

1

在您的代码中,您似乎已经习惯String了添加/删除ComboBoxType项目。请按照以下步骤实现您的要求:

在此屏幕截图中,您可以看到我已将类型设置为System.Collection.Specialized.StringCollection每次分开以供将来使用。

物品收藏

现在,您可以使用以下代码:

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

值得注意的是,您可以更改变量名称,它们与我的代码中的变量名称略有不同。

代码的表单结构:

默认形式

MyBase.Load事件中,所有包含 in 的项目My.Settings.tests都将使用For Each循环添加(受益于 StringCollection)。

[添加 - 使用 My.Settings 删除] 表单的工作示例:

添加到菜单         从菜单中移除

我希望你得到你的答案。

于 2020-05-02T20:13:42.490 回答