My.Settings"目标数组不够长。检查destIndex和length,以及数组的下限。"

时间:2016-07-07 14:30:30

标签: vb.net forms combobox

我有两个带组合框的表单。组合框值存储在My.Settings.testDevices中。 (System.Collections.Specialized.String.Collection),范围为User。

第二种形式添加了向testDevices添加项目的功能,然后在退出时更新My.Settings.testDevices。

现在,只有当我更改设置(仅添加项目)时,当我退回到主窗体(在整个过程中仍然加载)时,我的应用程序崩溃了以下内容消息:

"其他信息:目标数组不够长。检查destIndex和length,以及数组的下限。"

据我了解,这可能是一个并发问题,但我不确定。

我的代码:

在我的主要表单中加载事件:(从My.Settings加载)

   testDevicesComboBoxMain.Items.Clear()
   My.Settings.testDevices.CopyTo(mainFormTestDevices, 0)
   testDevicesComboBoxMain.Items.AddRange(mainFormTestDevices)

where" testDevicesComboBoxMain"是主窗体上的组合框。

在次要表格上关闭事件:(保存到My.Settings)

    Dim items(testDevicesComboBox.Items.Count - 1) As String
    testDevicesComboBox.Items.CopyTo(items, 0)
    My.Settings.testDevices.Clear()
    My.Settings.testDevices.AddRange(items)

    My.Settings.Save()

我在这里找到了类似的问题,但没有一个我理解的答案:P

由于我是vb.net的初学者,请以易于理解的形式提供任何答案!

感谢。

我忘了添加:

Public items(My.Settings.testDevices.Count - 1) As String
Public mainFormTestDevices(My.Settings.testDevices.Count - 1) As String

我尝试设置单独的声明,以防万一发生某种冲突。这显然是做同样的事情,只是用不同的名字。

1 个答案:

答案 0 :(得分:0)

我通过添加For循环来修复它,以便从My.Settings中读取。

    For Each i As String In My.Settings.testDevices
        testDevicesComboBoxMain.Items.Add(i)
    Next

这似乎已经解决了这个问题,也许可能是一个更现代化的问题。这样做的方式?