Une exception non gérée du type 'System.NullReferenceException' que l'on trouve en cliquant sur TreeNode

Je reçois ce message d'erreur à chaque fois qu'un treenode est cliqué sur:

Une exception non gérée du type 'System.NullReferenceException'
s'est produite dans Picture-Resize.exe informations Supplémentaires: Objet
de référence non définie à une instance d'un objet.

Mon code est comme suit:

public Form1()
{
InitializeComponent();
this.treeView1.NodeMouseClick += new TreeNodeMouseClickEventHandler (this.treeView1_NodeMouseClick);
PopulateTreeView();
}
private void PopulateTreeView()
{
TreeNode rootNode;
DirectoryInfo info = new DirectoryInfo(@"c:\\");
if (info.Exists)
{
rootNode = new TreeNode(info.Name);
rootNode.Tag = info;
GetDirectories(info.GetDirectories(), rootNode);
treeView1.Nodes.Add(rootNode);
}
}
private void GetDirectories(DirectoryInfo[] subDirs, TreeNode nodeToAddTo)
{
TreeNode aNode;
DirectoryInfo[] subSubDirs;
foreach (DirectoryInfo subDir in subDirs)
{
aNode = new TreeNode(subDir.Name, 0, 0);
aNode.Tag = subDir;
aNode.ImageKey = "folder";
try
{
/*  subSubDirs = subDir.GetDirectories();
if (subSubDirs.Length != 0)
{
GetDirectories2(subSubDirs, aNode);
}*/
}
catch (System.UnauthorizedAccessException)
{
subSubDirs = new DirectoryInfo[0];
}
nodeToAddTo.Nodes.Add(aNode);
}
}
void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{               
//if (treeView1.SelectedNode.Nodes.Count > 0) { MessageBox.Show("Child node exists"); } else { MessageBox.Show("Child Node does not exist"); }
try
{
TreeNode newSelected = e.Node;
// treeView1.SelectedNode.Nodes.Add("test");
listView1.Items.Clear();
DirectoryInfo nodeDirInfo = (DirectoryInfo)newSelected.Tag;
ListViewItem.ListViewSubItem[] subItems;
ListViewItem item = null;
foreach (DirectoryInfo dir in nodeDirInfo.GetDirectories())
{
item = new ListViewItem(dir.Name, 0);
subItems = new ListViewItem.ListViewSubItem[]
{new ListViewItem.ListViewSubItem(item, "Directory"), 
new ListViewItem.ListViewSubItem(item, 
dir.LastAccessTime.ToShortDateString())};
item.SubItems.AddRange(subItems);
listView1.Items.Add(item);
}
foreach (FileInfo file in nodeDirInfo.GetFiles())
{
item = new ListViewItem(file.Name, 1);
subItems = new ListViewItem.ListViewSubItem[]
{ new ListViewItem.ListViewSubItem(item, "File"), 
new ListViewItem.ListViewSubItem(item, 
file.LastAccessTime.ToShortDateString())};
item.SubItems.AddRange(subItems);
listView1.Items.Add(item);
}
listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
}
catch (Exception ex)
{
if (ex is System.NullReferenceException || ex is System.UnauthorizedAccessException)
{
}
}
}

Ce qui se passe est le gestionnaire d'exception attrape, mais parce qu'une exception a été levée il oblige l'utilisateur à cliquer deux fois pour le gestionnaire de clic à prendre effet.

Pourquoi j'obtiens cette erreur, et comment puis-je l'éviter?

À la ligne de code qui est l'exception levée
ce type d'exception est très facile à déboguer et résoudre, vous devriez remarquer (mettez en surbrillance) la ligne de code où l'exception est levée. Sans connaître le code de la ligne je ne pense pas que quelqu'un ici peut (n'hésitez pas à) la piste vers le bas tout du début à la fin de votre NodeMouseClick gestionnaire d'événement pour vous aider.
J'ai copié le code, il fonctionne sans exceptions!
L'exception est lancée à la ligne que j'ai commenté: (désolé pour la confusion) //if (treeView1.SelectedNode.Nodes.Count > 0) { MessageBox.Show("Child node exists"); } else { MessageBox.Show("Child Node does not exist"); }

OriginalL'auteur TK421 | 2013-06-22