c# - 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); <---------
}
解决方案
有一部分代码可以使这个列表为空
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... }
推荐阅读
- php - I get parse error code within my php code
- sql - 加快将 XML 文件插入 SQL Server 表的速度
- node.js - 安装 Nodemon 时出错 - 从未调用 cb()
- swift - Core Data codegen 如何决定是否将属性设为可选?
- angular - Angular 拦截器不会重新提交失败的请求
- swift - 需要双击按钮来更改图像
- docker - 如何为本地和产品设置管理多个 docker 文件和 docker-compose?
- mysql - SQL 强大的架构师
- angular - 在 Angular 中使用数据服务来集中数据和 http 调用
- c++ - 如何在 MFC 中创建两个窗口(MDI+SDI)