首页 > 解决方案 > Properties.Settings.Default.myList.Add(item) 不添加我的项目

问题描述

我想将 listBox 的项目添加到 Properties.Settings.Default 内的列表中,但它根本不起作用。我使用从 Microsoft.VisualBasic 库添加的消息框将项目添加到我的列表框,然后将输入添加到列表框:

private void Button_additem_Click(object sender, EventArgs e)
{
    string itemname = Interaction.InputBox("Item hinzufügen", "Gib unten den Namen des Items ein.", "");
    if (itemname.Length > 0)
    {
        listbox_items.Items.Add(itemname);
    }
    else { }
    Save();
    Restore();
}

之后我使用我的 Save() 和 Restore() voids:

private void Save()
{
    if (Properties.Settings.Default.myList == null)
    { }
    else 
    { 
        Properties.Settings.Default.myList.Clear(); 
    }

    foreach (object item in listbox_items.Items)
    {
        Properties.Settings.Default.myList.Add(item);
    }

    Properties.Settings.Default.Save();
}

private void Restore()
{
    combobox_montag.Items.Clear();
    combobox_dienstag.Items.Clear();
    combobox_mittwoch.Items.Clear();
    combobox_donnerstag.Items.Clear();
    combobox_freitag.Items.Clear();
    combobox_samstag.Items.Clear();
    combobox_sonntag.Items.Clear();
    listbox_items.Items.Clear();

    foreach (object item in Properties.Settings.Default.myList)
    {
        combobox_montag.Items.Add(item);
        combobox_dienstag.Items.Add(item);
        combobox_mittwoch.Items.Add(item);
        combobox_donnerstag.Items.Add(item);
        combobox_freitag.Items.Add(item);
        combobox_samstag.Items.Add(item);
        combobox_sonntag.Items.Add(item);
        listbox_items.Items.Add(item);
    }
}

错误出现在这里,带有“System.NullReferenceException”“Planer.Properties.Settings.myList.get 返回 null。”:

foreach (object item in listbox_items.Items)
{
    Properties.Settings.Default.myList.Add(item);  <---------
}

标签: c#

解决方案


有一部分代码可以使这个列表为空

        if (Properties.Settings.Default.myList == null)
        { } 
        else { Properties.Settings.Default.myList.Clear(); 

这个if什么都不做,如果列表为 null 它不能添加一个项目,null 与空 null 不同意味着 inexsintent,你需要创建一个新的,因为你只在else中读取列表,所以:

if (Properties.Settings.Default.myList == null)
        {Properties.Settings.Default.myList = new List<?> etc... } 

推荐阅读