初始化一个StringCollection设置

问题描述 投票:8回答:4

我正在编写一个应用程序,我想存储一个由用户选择的文件列表。目前,我的一个设置是一个名为filesToFetch的StringCollection,它是用户范围的,包含了程序应该获取的所有文件的路径。我有一个按钮,允许用户向列表中添加新文件。这是按钮点击事件的代码

private void button1_Click(object sender, EventArgs e)
{
    DialogResult result = openFileDialog1.ShowDialog();
    if (result == DialogResult.OK)
    {
        Properties.Settings.Default.filesToFetch.Add(openFileDialog1.FileName);
        Properties.Settings.Default.Save();
    }
}

当我尝试向StringCollection添加新文件时,我得到了错误信息

NullReference异常未被处理。

对象引用未设置为对象的实例。

我想这可能是因为 filesToFetch 没有被初始化,但我不太确定。我可能错了,但我认为对象在初始化时就会得到一个名字,而且由于我的设置都是在设计时得到名字,我认为它们在程序运行时就会自动初始化,但现在我认为我可能错了。是这个问题,还是我遗漏了什么?

下面是我的设置的屏幕截图,供参考。

Properties Settings

c# settings stringcollection
4个回答
3
投票

我也许应该进一步解释一下。假设你打算使用一个字符串列表。你可以声明。

IList<string> a;

这时a=null 而null没有Add方法 如果你初始化。

IList<string> a = new List<string>();

现在a =一个空的字符串列表, 此时它将有一个Add方法,用来向列表中添加字符串。


16
投票

如果你想在设置GUI中输入值,在最右边有一个"... "按钮,它允许你输入初始的字符串值,每个值都隔一行。然后它就会把这些值转换成XML。

<?xml version="1.0" encoding="utf-16"?>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <string>String1</string>
  <string>String2</string>
</ArrayOfString>

编辑:是的,你需要初始化StringCollection,我上面的回答是使用GUI的方式。我想它会帮助那些偶然发现这个帖子的人(比如我),他们正在寻找一种方法来初始化StringCollection设置,就像OP需要做的那样。


0
投票

我在使用add方法时也遇到了类似的问题,但使用index和value参数插入时却能正常工作。

https:/msdn.microsoft.comen-uslibrarysystem.collection.specialized.stringcollection.insert%28v=vs.110%29.aspx。

这样的东西可能会有用。

private void button1_Click(object sender, EventArgs e)
{
    DialogResult result = openFileDialog1.ShowDialog();
    if (openFileDialog1.ShowDialog(this) != DialogResult.OK)
        return;
    int x = 0;
    foreach (String file in openFileDialog1.FileNames)
    {
        Properties.Settings.Default.activeFiles.Insert(x, openFileDialog1.Filename);
        x++;
    }

    Properties.Settings.Default.Save();
}

0
投票

虽然这个问题很棘手,但解决方法很简单,创建一个像你一样的设置。复制&将以下代码粘贴到以下地方。Default Value &amp;继续以你的方式工作。

<?xml version="1.0" encoding="utf-16"?>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />

解释 在C#中使用字符串集合设置

希望能帮到你。谢谢你的帮助

© www.soinside.com 2019 - 2024. All rights reserved.