更新列表框而不重启程序?

时间:2014-10-08 10:36:05

标签: c# listbox

我正在构建一个winfrom应用程序,它将成为一本地址簿。我虽然遇到了问题。当我打开程序并按下我的加载联系人按钮时,它会加载文本文件中写入的所有内容。但是,如果我创建新联系人并再次按下加载,则新联系人不会显示。有没有什么办法解决这一问题?

此外,当我尝试创建新方法时,例如Delete()方法。它说“设置DataSource属性时无法修改Items集合。”任何想法为什么会崩溃?

    List<string> Load()
    {
        StreamReader read = new StreamReader(path);
        string row = "";
        while ((row = read.ReadLine()) != null)
        {
            adressbook.Add(row);
        }
        read.Close();
        return adressbook; //Adressbook is my List<string> adressbook = new List<string> uptop.
    }
    private void button2_Click(object sender, EventArgs e)
    {
        List<string> list = Load();
        listBox1.DataSource = list;
    }

1 个答案:

答案 0 :(得分:0)

在清除和绑定之前,您必须设置 null DataSource

private void button2_Click(object sender, EventArgs e)
{
    if(listBox1.DataSource != null)
    {
        listBox1.DataSource = null;

        listBox1.Items.Clear();
    }

    List<string> list = Load();
    listBox1.DataSource = list;
}

加载中,您必须先清除列表

List<string> Load()
{
    if (adressbook.Count != 0)
    {
        adressbook.Clear();
    }

    StreamReader read = new StreamReader(path);
    string row = "";
    while ((row = read.ReadLine()) != null)
    {
        adressbook.Add(row);
    }
    read.Close();
    return adressbook; //Adressbook is my List<string> adressbook = new List<string> uptop.
}