初始化StringCollection设置

时间:2012-11-16 15:38:28

标签: c# settings stringcollection

我正在编写一个应用程序,我想存储用户选择的文件列表。目前,我的一个设置是名为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

4 个答案:

答案 0 :(得分:11)

如果要在设置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执行此操作的方法。认为它会帮助人们(像我一样)偶然发现这篇文章寻找初始化像OP需要做的StringCollection设置的方法。

答案 1 :(得分:2)

我应该进一步解释一下。假设您要使用字符串列表。你可以声明:

IList<string> a;

此时a = null且null没有Add方法。如果你初始化:

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

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

答案 2 :(得分:0)

我使用add方法有类似的问题,但插入索引和值参数工作正常。

https://msdn.microsoft.com/en-us/library/system.collections.specialized.stringcollection.insert%28v=vs.110%29.aspx

这样的事可能有用:

<div class="form-group">

            @Html.LabelFor(model => model.FechaHasta, new { @class = "col-sm-2 control-label" })
            <div class="col-sm-10">
                @Html.EditorFor(model => model.FechaHasta, new { htmlAttributes = new { @class = "form-control" } })
                <span class="icon" aria-hidden="true"></span>
                <div class="help-block">
                    @Html.ValidationMessageFor(model => model.FechaHasta)
                </div>
            </div>

        </div>

答案 3 :(得分:0)

尽管问题很棘手,但解决方案很简单。 像您一样创建设置。将以下代码复制并粘贴到Default Value的位置,并按照您的方式继续工作。

<?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" />

说明Use a string collection setting in C#

希望这会有所帮助。谢谢。