2011-06-23 93 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