我在my.settings中有一个字符串集合。我想从文本框中添加一个字符串。我试过这个:
My.Settings.Usernames.Add(textbox1.Text)
但是代码执行时我抛出了这个错误:
System.NullReferenceException:未将对象引用设置为对象的实例。
有什么想法吗?感谢任何回答,谢谢。
答案 0 :(得分:5)
很可能你还没有实例化它。
如果此时运行该程序,则该设置实际上并未创建,因此,如果您尝试在集合中添加或删除项目,则会收到错误"未设置对象引用到一个对象的实例。"
有几种方法可以解决这个问题。首先,如果它是null,你可以在运行时创建设置对象,但这有点麻烦。
更好的解决方案是单击“设置”页面上的“值”文本框。然后单击右侧的省略号以打开字符串集合编辑器。如果在不添加任何字符串的情况下关闭它,“设置”窗口仍然不会实际创建设置对象。为防止这种情况,请在String Collection Editor中添加一个字符串,然后单击OK。然后再次打开编辑器,删除该字符串,然后单击“确定”。这会保留设置对象,但它是空的。
答案 1 :(得分:1)
动态执行此操作的另一种方法是在Form Load事件或Sub Main中,具体取决于您的应用程序的启动方式:
' initialize the collection ias needed:
If My.Settings.Usernames Is Nothing Then
My.Settings.Usernames = New System.Collections.Specialized.StringCollection
End If
通过在Settings
中添加假字符串来强制它进行初始化是一个很好的知识,并将其保持为设计时任务。但这非常简单,并且像使用前需要实例化的任何其他对象一样对待它。