Hi @ all,
mal wieder eine Frage:
Ich habe den Windows Explorer nachgebastelt. Auf der Linken Seite befindet sich die Baumansicht, auf der rechten die OrdnerAnsicht. Alles funktioniert bestens. Nun folgt aber noch eine Aufgabenstellung:
Wenn ich auf ein ITEM in der ListView klicke, soll automatisch in der TreeView der Pfad aufgeklappt werden.
Ich bekommen den Pfad der Listview mit:
this.ListView1.FokusedItem.Tag.ToString()
(z.B.: C:\windows\blabla.datei)
Als Gedanke: Ich habe versucht, den Pfad in ein StringArray zu speichern, aber weis nun nicht, wie ich diesen String nu in der TreeView suche !?
Hat jemand vielleicht ein bisserl Code oder Hilfe für mich ?
---- >
Keine Signatur 😉
Gehe mal davon aus, dass du VS 2005 verwendest.
Als 1. musst du darauf achten, dass du jedem TreeNode in deinem TreeView neben dem Text ein Value zuweist. Der Text wird denke ich mal der Ordnername sein, für das Value nimmst du diesen ebenfalls.
So in etwas sollte es dann funktionieren:
TreeNode nd;
string pfad = @"c:\windows\system32\x.bin";
string ordnername = string.Empty;
pfad = pfad.Substring(0, pfad.Length - (pfad.Length - (pfad.LastIndexOf(@"\") + 1)));
while(pfad.IndexOf(@"\") != -1)
{
ordnername = pfad.Substring(0, pfad.IndexOf(@"\"));
if(ordnername.IndexOf(":") != -1)
nd = this.treeView1.Nodes[ordnername];
else
nd = nd.Nodes[ordnername];
pfad = pfad.Remove(0, ordnername.Length + 1);
}
nd.Expand();
Habs leider nicht probieren können, weil ich grad kein 2005er da hab...
Kurze Erklärung:
Hoffe das hilft....
Hallo telnet,
kleiner Hinweis: statt Pfade als String zu manipulieren, sollte man immer die Methoden der Path-Klasse verwenden. Siehe dazu auch die Diskussion in HTML Datei öffnen
herbivore
Du könntest auch 'einfach' im ListViewItem.Tag den Treenode hinterlegen, der diesem Eintrag entspricht.
Hi, @ Alle Helfer 😉
Hab den Code von TELNET mal für mich mal so umgeschrieben:
(Ich nutze MS C# Express g)
try
{
string pfad = this.explorer.SelectedItems[0].Tag.ToString(); // ListView
string ordnername = Path.GetFullPath(pfad);
pfad = pfad.Substring(0, pfad.Length - (pfad.Length - (pfad.LastIndexOf(@"\") + 1)));
while (pfad.IndexOf(@"\") != -1)
{
ordnername = pfad.Substring(0, pfad.IndexOf(@"\"));
if (ordnername.IndexOf(":") != -1)
node = this.explorer_links.Nodes[ordnername]; // Explorer_links = TreeView
else
node = node.Nodes[ordnername];
pfad = pfad.Remove(0, ordnername.Length + 1);
}
node.Expand();
}
catch(System.Exception err)
{
MessageBox.Show("Fehler" + err.ToString());
}
Ich hab vorher schon eine TreeNode node deklariert !!!
Jetzt krieg ich die ganze Zeit eine NullReferenceException !?
An diesem Problem häng ich schon fast 3 Monate gg
Mach ich mal wieder irgendwas falsch ??
---- >
Keine Signatur 😉
Hallo axelfxxx,
NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt
herbivore
Guten Morgen, herbivore
was diese Exception bedeuted weis ich ! Aber ich suche nach der Ursache, warum ich diese Meldung kriege. Ich mach noch nicht allzu lange mit C#, kenne also manche Feinheiten noch nicht.
mfg
Alex
---- >
Keine Signatur 😉
Hallo axelfxxx,
in dem genannten FAQ Beitrag wird beschrieben, wie man die Ursache ermittelt und behebt. Lies bitte alles noch mal ganz genau.
herbivore
Hallo herbivore,
danke für den Tipp... werd ich mir gleich mla ansehen und für das nächste Mal merken....