Hi,
ich arbeite im Moment an einem kleinen Projekt in C#, genauer gesagt an einem Explorer (so ähnlich wie der Total Commander falls ihn wer kennt).
Das hier listet die Verzeichnisse auf:
Code:
private void GetDirectories(DirectoryInfo[] subDirs, TreeNode nodeToAddTo)
{
TreeNode aNode;
foreach (DirectoryInfo subDir in subDirs)
{
//MessageBox.Show(subDir.ToString());
if (! leftSideView.Nodes.ContainsKey(subDir.Name))
{
aNode = new TreeNode(subDir.Name, 0, 0);
aNode.Tag = subDir;
aNode.ImageKey = "folder";
nodeToAddTo.Nodes.Add(aNode);
}
else
{
leftSideView.SelectedNode.Nodes.RemoveByKey(subDir.Name);
}
}
}
Die Parameter, die übergeben werden sind der markierte Knoten im Treeview, bzw die Unterverzeichnisse des Knotens, leftSideView ist ein Treeview.
Der Aufruf:
Code:
private void leftSideView_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
{
TreeNode newSelected = e.Node;
DirectoryInfo nodeInfo = new DirectoryInfo(leftSideView.SelectedNode.FullPath);
try
{
//Unterordner anzeigen
GetDirectories(nodeInfo.GetDirectories(), newSelected);
}
catch
{
MessageBox.Show("Zugriff verweigert");
newSelected.BackColor = Color.Red;
}
//Knoten öffnen
leftSideView.SelectedNode.Expand();
}
Das Problem ist, dass er die If-Abfrage mit dem ContainsKey anscheinend ignoriert, denn er spring mir wieder und immer wieder in die Funktion rein und vervielfacht so die Einträge mit jedem Doppelklick auf den Knoten. Benutz ich das ContainsKey hier einfach nur falsch oder an was liegt es?
Ich hoffe jemand kann mir da ein wenig auf die Sprünge helfen und danke im voraus.
Serya