2011-06-23 94 views
2

在ac#wpf應用程序中,我從列表中加載一個treeView,它有一個刪除,編輯和添加按鈕,用於從textFile保存在列表中的信息,它也有一個更新按鈕,當它點擊它清除樹視圖,然後將textFile信息重新加載到列表中,然後將列表重新加載到treeView中,但是每當我單擊更新時,它會在碰撞時崩潰我的文件:treeView1.Items.Clear();在.Clear()行開頭之前的所有變量都是列表,如果(i == 0)我只是把它們取出,因爲它們都是相同的,所以if語句與這個相似。由於清除樹視圖崩潰

這裏是更新的按鈕

private void buttonUpdate_Click(object sender, RoutedEventArgs e) 
{ 

    name.Clear(); 
    description.Clear(); 
    dateStart.Clear(); 
    dateDue.Clear(); 
    status.Clear(); 
    priority.Clear(); 
    details.Clear(); 

    using (StreamReader sr = new StreamReader("TaskList.txt")) 
    { 
     int i = 0; 
     while (!sr.EndOfStream) 
     { 
      //if its on the first line of a task 
      if (i == 0) 
      { 
       name.Add(sr.ReadLine()); 
       ++i; 
      } 
      else if (i == 1) 
      { 
       description.Add(sr.ReadLine()); 
       ++i; 
      } 
      else if (i == 2) 
      { 
       dateStart.Add(sr.ReadLine()); 
       ++i; 
      } 
      else 
      { 
       details.Add(sr.ReadLine()); 
       i = 0; 
      } 
     } 

     treeView1.Items.Clear(); 

     for (int j = 0; j < name.Count; ++j) 
     { 
      TreeViewItem taskTree = new TreeViewItem(); 
      taskTree.Tag = name[j]; 
      taskTree.Header = name[j]; 
      taskTree.Items.Add(description[j]); 
      taskTree.Items.Add(dateStart[j]); 
      taskTree.Items.Add(dateDue[j]); 
      taskTree.Items.Add(status[j]); 
      treeView1.Items.Add(taskTree); 
     } 
     sr.Close(); 
    } 
} 
+2

**什麼是異常?** – SLaks

+1

@SLaks編程停止響應,然後當我點擊調試即時獲取:在main.exe中發生未處理的異常類型'System.NullReferenceException',它將我發送給此line:string selectName =((TreeViewItem)(treeView1.SelectedItem))。Header.ToString();這是在我的事件代碼treeView_SelectedItemChanged – Beef

回答

2

事件代碼清除樹視圖後,SelectedItemnull

+1

謝謝,有沒有辦法解決這個問題,所以我可以清除樹視圖,因爲在我的更新按鈕,我不使用selectedItem – Beef

+0

@Beef:檢查處理程序中的'null'。 – SLaks