Feedback

Treeview rekursiv durchsuchen

Sprache: C#

Durchsucht die Knoten eines Treeview rekursiv nach einem Text und liefert den ersten gefundenen Konten zurück
TreeNode FindNode (TreeNodeCollection tncoll, String strText)
{
   TreeNode tnFound;
   foreach (TreeNode tnCurr in tncoll) {
      if (tnCurr.Text.StartsWith (strText)) {
         return tnCurr;
      }
      tnFound = FindNode (tnCurr.Nodes, strText);
      if (tnFound != null) {
         return tnFound;
      }
   }
   return null;
}

// Beispielaufruf
void SearchTextChanged (Object objSender, EventArgs ea)
{
   _tvDir.SelectedNode = FindNode (_tvDir.Nodes, _tbxSearch.Text);
}
TreeNode FindNode (TreeNodeCollection tncoll, String strText)
{
   TreeNode tnFound;
   foreach (TreeNode tnCurr in tncoll) {
      if (tnCurr.Text.StartsWith (strText)) {
         return tnCurr;
      }
      tnFound = FindNode (tnCurr.Nodes, strText);
      if (tnFound != null) {
         return tnFound;
      }
   }
   return null;
}

// Beispielaufruf
void SearchTextChanged (Object objSender, EventArgs ea)
{
   _tvDir.SelectedNode = FindNode (_tvDir.Nodes, _tbxSearch.Text);
}

1 Kommentar

  1. Um einen Textausschnitt zu suchen, z.B. ‚arte‘ in ‚Kartenhaus‘, muss man in Zeile 5 ‚tnCurr.Text.StartsWith (strText)‘ durch ‚tnCurr.Text.Contains (strText)‘ ersetzen.