2014-10-08 70 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

相關問題