2014-10-08 50 views
2

我正在构建一个winfrom应用程序,它将成为一个adressbook。尽管如此,我仍然遇到了问题。当我打开程序并按下我的加载联系人按钮时,它会加载所有写入文本文件的内容。但是,如果我创建新联系人并再次按下加载,则新联系人不会显示。有没有什么办法解决这一问题?更新列表框而不重新启动程序?

此外,当我尝试创建新的方法,例如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; 
    } 

回答

0

你必须清除和绑定之前设置为数据源

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. 
} 
+0

做当这并创建一个新的联系人,然后再次加载,我得到一个新的联系人,更新如果我得到新的联系人加上旧的联系人。所以我的列表框看起来像“Fredrik” - 新的联系人“Boris” - 更新:“Fredrik,Fredrik Boris”。 – Fredrik 2014-10-08 11:27:17

相关问题