0

我有点生疏了,正在更新我在 2013 年使用 VS2017 编写的 VB.Net 程序。我需要将 My.Settings StringCollection 数组扩展一个条目。这是用户范围,尽管进行了数小时的在线研究和测试,但我无法弄清楚如何扩大现有阵列。

我尝试使用 .Add 方法,但被告知“不是 String 的成员”。我尝试删除“user.config”。

最后我尝试了这个,它起作用了:1)在设计时,在设置中,我将额外的占位符值添加到我的 StringCollection 变量中。2)将范围从用户更改为应用程序。3) 运行程序。4)将范围更改回用户。我通过在运行时检查 My.Settings 确认了这一点。我想知道的是:为什么会这样,有没有更优雅的方式来做到这一点?

    For index = 0 To 5 'Motor numbers
        'Changing upper index limit from 4 to 5 throws an Exception 
        strCommand = "(0," & index.ToString & ")"
        My.Settings.strMotor_Kp(index) = (Kpid(0, index))
        strCommand = "(1," & index.ToString & ")"
        My.Settings.strMotor_Ki(index) = (Kpid(1, index))
        strCommand = "(2," & index.ToString & ")"
        My.Settings.strMotor_Kd(index) = (Kpid(2, index))
    Next
4

1 回答 1

1

StringCollection 编辑器相当有限,您可以轻松地追加行,但据我所知,无法在中间插入一行。

但是你也可以更改里面的值app.config,重新编译项目然后打开设置,然后VS会问你

app.config 文件中设置“Foo”的值已更改。...您要更新 .settings 文件中的值吗?

整个事情应该可以工作,而不必将设置切换到应用程序并返回到用户模式。只需编译它,然后更改就会反映在app.configuser.config调用方法 Save() 时在运行时生成)。

仅当项目命名空间发生变化时,必须在重新编译项目之前删除旧条目app.config,或者必须在<[...].Properties.Settings>标签中调整命名空间)。

于 2019-07-05T18:35:27.113 回答