我有两个带组合框的表单。组合框值存储在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
我尝试设置单独的声明,以防万一发生某种冲突。这显然是做同样的事情,只是用不同的名字。
答案 0 :(得分:0)
我通过添加For循环来修复它,以便从My.Settings中读取。
For Each i As String In My.Settings.testDevices
testDevicesComboBoxMain.Items.Add(i)
Next
这似乎已经解决了这个问题,也许可能是一个更现代化的问题。这样做的方式?