【问题标题】:Object reference not set to an instance of an object (Application user settings)对象引用未设置为对象的实例(应用程序用户设置)
【发布时间】:2012-07-23 22:18:37
【问题描述】:

在我的应用程序用户设置中,我有一个名为“网站”的StringDictionary。带有消息“对象引用未设置为对象的实例”的 NullReferenceException。当它到达这条线时:Properties.Settings.Default.websites.Add(nameBox.Text, urlBox.Text);,但我不知道为什么。 VS 调试器显示 nameBox.Text 和 urlBox.Text 是正确的值。

编辑:

我已经确定它默认为null,所以在Form.Load上,我添加了

if (Properties.Settings.Default.websites == null) {
            MessageBox.Show("property is null");
            Properties.Settings.Default.websites = new StringDictionary();
}

但现在设置没有保存。

【问题讨论】:

  • Properties.Settings.Default.websites 的任何部分是否为空?
  • @JohnSaunders 这个问题与您指出的问题并不重复,因为它专门针对 Properties.Settings
  • @HatSoft:肯定是重复的。这是另一种情况,“您希望引用引用某物,但令人惊讶的是,它没有”。

标签: c# .net null settings


【解决方案1】:

看起来您的 StringDictionary 网站范围设置为无法在运行时修改的应用程序。您将范围更改为用户,以便每个用户在运行时更改它

取自 MSDN

Application-scoped settings 可用于 URL 等信息 用于 Web 服务或数据库连接字符串。这些值是 与应用程序相关联。因此,用户无法更改它们 在运行时。

编辑:要保存设置,您必须使用Properties.Settings.Default.Save();

【讨论】:

  • @airplaneman19 在这种情况下,您可以在使用网站时检查 nameBox.Text、urlBox.Text 是否为空。添加
  • 是的,调试器显示它们具有有效值。请查看我的编辑。
  • 我将它添加到我的代码中,但当我重新打开应用程序时它仍然为空。
  • @airplaneman19 您正在 form_load 上设置一个新的 StringDictionaty 实例,它会清理您保存的前一个实例
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多