如何在运行时将项目添加到列表框中';s的items集合,因此在设计时模式下它可以永久保存

本文关键字:模式 保存 集合 添加 项目 运行时 列表 items | 更新日期: 2023-09-27 18:26:45

在winform应用程序中,将项目添加到列表框的项目集合时,这些项目将保持不变,并且在应用程序启动时可用,但在运行时添加的项目在下次启动应用程序时不会保持不变。

如何在运行时创建相同的设计时行为,以便在不使用任何类型的数据绑定或序列化的情况下将项永久保存在控件项集合中?

感谢

如何在运行时将项目添加到列表框中';s的items集合,因此在设计时模式下它可以永久保存

一种方法是将列表框项目提交到您的属性设置中,这样当您加载应用程序时,它就会拥有数据。您必须右键单击要保存数据的项目,然后单击属性窗口中的"设置"选项卡。在那里你可以添加每个项目。从那里你所要做的就是:

Properties.Settings.Default.myListboxItem = "Some new value";
Properties.Settings.Default.Save();

这段代码将更新您创建的设置值,调用Save()非常重要,因为这就是提交更改的原因,所以每当您对设置中的任何值进行修改时,都会在最后调用Save()。

然后在初始加载时,或者在表单创建时,您可以这样做:

myListBox.Items.Add(Properties.Settings.Default.myListboxItem);
// Repeat as needed

一种方法是创建一个文本文件,程序在启动时从中读取该文件以将数据加载到列表框中,并在向列表框添加内容时将其保存到文件中。

加载最好在构造函数中完成:

class MyClass : Form
{
    public MyClass()
    {
        if (File.Exists("ListBoxItems.txt"))
        {
            using (StreamReader sr = new StreamReader("ListBoxItems.txt"))
            {
                while (sr.Peek() != -1)
                {
                    myListBox.Items.Add(sr.ReadLine());
                }
            }
        }
    }
    //Other class functions here
}

然后,当您从应用程序中向ListBox添加项目时,假设您使用了一个TextBox和一个Button,并且该Button将TextBox中的文本添加到ListBox,请执行以下操作:

public void AddToListBoxButton(object sender, EventArgs e)
{
    myListBox.Items.Add(myTextBox.Text);
    using (StreamWriter sw = new StreamWriter("ListBoxItems.txt",true))
    {
        sw.WriteLine(myTextBox.txt);
    }
}

如果加载表单时该文件不存在,则不会出现任何错误,并且当您添加到列表框中时,它将为您创建该文件。所有代码都经过了测试并可以正常工作。