如何在c#的树视图中选择多个节点(如果它包含特定文本)

时间:2017-07-07 09:18:31

标签: c# winforms treeview

我有如下的树视图,

tables
--table1
  --tab1
  --tab2
--table2
  --tab2
  --tab2

我给出了一个文本“tab”并使用treeViewMenu.SelectedNode = txtbox1.Text,它选择了第一个匹配(即node:table1)

我希望选择名称中包含“tab”的所有节点。 (即表1和表2)

我已尝试将数组传递给treeViewMenu.SelectedNode =array[],但这不起作用。

1 个答案:

答案 0 :(得分:0)

TreeView不适用于MultiSelect。但是,如果您只想查看哪些节点与TextBox中的字符串匹配,则可以更改此BackColor的{​​{1}}。

Nodes

要找出“已选择”哪些节点,您可以使用:

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);
    }
}

您还可以使用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); } } - 属性来显示所选节点:

CheckBoxes

找出检查的节点:

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);
    }
}