【问题标题】:Visual Studio 2019 (vb) - issue with Reading/Writing My.SettingsVisual Studio 2019 (vb) - 读/写 My.Settings 的问题
【发布时间】:2020-05-02 19:15:43
【问题描述】:

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

我的目标是拥有一系列包含一些字符串的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

怎么了?

【问题讨论】:

    标签: vb.net my.settings


    【解决方案1】:

    在您的代码中,您似乎使用了String 来添加/删除ComboBoxType 项目。按照以下步骤实现您的要求:

    在此屏幕截图中,您可以看到我已将 Type 设置为 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 事件中,所有包含在My.Settings.tests 中的项目都将使用For Each 循环添加(受益于StringCollection)。

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

          

    希望你能得到答案。

    【讨论】:

    • 但是您可以在示例中看到,我已经在第一张图片中明确提供了测试字符串集合 + 也是在 MyBase.Load 事件中加载的。
    • 好的,没明白。但是为什么我没有看到对应用程序所做的更改反映在 exe.config 文件中?我只看到原始条目,没有添加 i.stack.imgur.com/JYkBL.png
    • 确保设置已保存(尝试重新打开程序并查看它是否打印已保存的设置)。
    • 真是难以置信...所以:-进入app.config中有这三个字符串--- INCSRCICCIO --- 我在 myBase.Load 上再次添加了这段代码 --- For Each item In My.Settings.TYPE ComboBoxTYPE.Items.Add(item) Next End Sub ---- 结果是组合框不包含我的设置中出现的条目。如果我使用您提供给我的代码将新字符串添加到组合框中,这些更改不会反映到 app.config 文件中。我很绝望!
    • 尝试删除app.config,看看是否有效。该代码已在我的机器上完整运行。这意味着你几乎成功了,只是出了点问题,这是未知的。
    猜你喜欢
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 2020-06-18
    相关资源
    最近更新 更多