如何扩展现有的My.Settings StringCollection数组

时间:2019-07-05 15:37:00

标签: vb.net my.settings

我有点生锈,正在更新我在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

1 个答案:

答案 0 :(得分:0)

StringCollection编辑器有很多限制,您可以轻松地添加行,但据我所知不可能在其中插入一行。

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

  

在app.config文件中更改了设置“ Foo”的值。 ... 你呢   是否要更新.settings文件中的值?

整个过程应该无需将设置切换为应用程序并返回用户模式即可。只需对其进行编译,然后更改将反映在app.config中(user.config是在调用方法Save()时在运行时生成的。)

仅如果项目名称空间已更改,则必须在重新编译项目之前从app.config中删除旧条目,否则必须在<[...].Properties.Settings>标签中调整名称空间)。