【问题标题】:How to Expand Existing My.Settings StringCollection Array如何扩展现有的 My.Settings StringCollection 数组
【发布时间】:2019-07-05 15:37:00
【问题描述】:

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

【问题讨论】:

  • 你如何创建新的 Specialized.StringCollection 并保存它?
  • 我从未使用过新方法。 StringCollection(例如,My.Settings.strMotor_Kp)最初是在 2013 年通过 MyProject|Settings 进行 5 个条目创建的。我想要做的(并且做了,使用描述的方法)是将它扩展为 6 个条目。我按照描述添加了第 6 个条目。

标签: vb.net my.settings


【解决方案1】:

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

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

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

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

只有在项目命名空间发生变化的情况下,必须在重新编译项目之前从app.config中删除旧条目,或者必须在<[...].Properties.Settings>标签中调整命名空间。

【讨论】:

  • 我在 2013 年使用 MyProject|Settings 创建的所有变量都被指定为“用户范围”,没有一个被指定为“应用程序范围”。据我了解,这意味着在我将感兴趣的变量切换到应用程序范围并返回之前,从未使用过 app.config 中的任何条目。 (顺便说一句,我认为没有理由不能使用我的方法在现有 StringCollection 数组的任何位置手动“插入”一个新值,而不仅仅是将其附加到数组的末尾。)
  • @petercat 创建一个新的,添加当前的东西,添加新的东西,然后保存在旧的地方怎么样?
  • @petercat:不,它们无论如何都会反映在 app.config 中,因为如果用户设置不存在,则会从其中获取。
  • CruleD:我认为您创建一个新的建议会奏效。我只是想看看我是否可以避免额外的工作,并使用遗留数据。毕竟,旧版 StringCollection 数组在某些应用程序中可能非常大,从而增加了拼写错误的风险。
  • @Christoph:你说的是真的,但在我提出的挑战中,用户设置确实存在(我不想丢失它们,或者像 CruleD 建议的那样重新输入它们) .
猜你喜欢
  • 2010-10-19
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
  • 2019-02-12
  • 2010-10-17
  • 2020-04-29
  • 1970-01-01
  • 2011-06-27
相关资源
最近更新 更多