Eine TreeView
ist nicht für MultiSelect
ausgelegt. Wenn Sie jedoch nur sehen möchten, welche Knoten mit der Zeichenfolge in der TextBox
übereinstimmen, können Sie die BackColor
dieser Nodes
ändern.
private void txtbox1_TextChanged(object sender, EventArgs e)
{
foreach (TreeNode tn in this.treeViewMenu.Nodes)
{
SetColor(tn);
}
}
private void SetColor(TreeNode Node)
{
if (Node.Text.Contains(this.txtbox1.Text))
{
Node.BackColor = System.Drawing.Color.Blue;
Node.ForeColor = System.Drawing.Color.White;
Node.Tag = true; //for later to find out which Nodes are "selected"
}
else
{
Node.BackColor = System.Drawing.Color.FromKnownColor(System.Drawing.KnownColor.Window);
Node.ForeColor = System.Drawing.Color.FromKnownColor(System.Drawing.KnownColor.WindowText);
Node.Tag = false;
}
foreach (TreeNode subNode in Node.Nodes)
{
SetColor(subNode);
}
}
Um herauszufinden, welche Knoten "ausgewählt" sind, können Sie diese verwenden:
private void btn_GetSelected_Click(object sender, EventArgs e)
{
string selectedNodes = "";
foreach (TreeNode tn in this.treeViewMenu.Nodes)
{
GetSelectedNodesByTag(tn, ref selectedNodes);
}
MessageBox.Show(selectedNodes, "Selected Nodes");
}
private void GetSelectedNodesByTag(TreeNode Node, ref string SelectedNodes)
{
if ((bool)Node.Tag == true)
{
if (SelectedNodes != "") SelectedNodes += "\n";
SelectedNodes += Node.FullPath;
}
foreach (TreeNode subNode in Node.Nodes)
{
GetSelectedNodesByTag(subNode, ref SelectedNodes);
}
}
Sie könnten auch die CheckBoxes
-Property verwenden, um die ausgewählten Knoten zu zeigen:
private void SetChecked(TreeNode Node)
{
if (Node.Text.Contains(this.txtbox1.Text))
{
Node.Checked = true;
}
else
{
Node.Checked = false;
}
foreach (TreeNode subNode in Node.Nodes)
{
SetChecked(subNode);
}
}
Und Finde heraus, welche Knoten überprüft werden:
private void GetCheckedNodes(TreeNode Node, ref string SelectedNodes)
{
if (Node.Checked)
{
if (SelectedNodes != "") SelectedNodes += "\n";
SelectedNodes += Node.FullPath;
}
foreach (TreeNode subNode in Node.Nodes)
{
GetCheckedNodes(subNode, ref SelectedNodes);
}
}
Was wollten Sie tun, nachdem sie ausgewählt wurden? Wie das mögliche Duplikat zeigt, wurde die Baumansicht nicht für Mehrfachauswahl entworfen. – Scrobi
Auch hier: https://stackoverflow.com/questions/25499249/how-do-i-select-multiple-nodes-at-a-time-from-treeview-control-using-c-sharp-and – MalvEarp