如何在c#中以编程方式选择treeview节点?

use*_*246 27 c# treeview winforms

用于treeview.SelectedNode选择子节点.如何以treeview.AfterSelect编程方式选择节点时调用事件?

this.treeView1.SelectedNode = this.treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes[0]; 
if (this.treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes[0].IsSelected) 
{
 MessageBox.Show("Node is selected"); 
}
Run Code Online (Sandbox Code Playgroud)

Ali*_*tad 42

为我以前混淆的答案道歉.

这是怎么做的:

myTreeView.SelectedNode = myTreeNode;
Run Code Online (Sandbox Code Playgroud)

(更新)

我测试了下面的代码,它的工作原理如下:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        treeView1.Nodes.Add("1", "1");
        treeView1.Nodes.Add("2", "2");
        treeView1.Nodes[0].Nodes.Add("1-1", "1-1");
        TreeNode treeNode = treeView1.Nodes[0].Nodes.Add("1-2", "1-3");
        treeView1.SelectedNode = treeNode;
        MessageBox.Show(treeNode.IsSelected.ToString());
    }


}
Run Code Online (Sandbox Code Playgroud)

  • 我了解到,当您以编程方式选择节点并且它没有显示为选中(蓝色)时,可能是因为树视图不是活动控件。 (2认同)
  • 谢谢 - 在 `SelectedNode` 设置器之后调用 `treeView1.Focus()` 使这项工作变得很棒 (2认同)

小智 5

treeViewMain.SelectedNode = treeViewMain.Nodes.Find(searchNode, true)[0];
Run Code Online (Sandbox Code Playgroud)

其中 searchNode 是节点的名称。我个人使用组合“节点+面板”,其中节点名称是节点+,并且在选择的面板上也设置相同的标签。通过此命令+按标签扫描面板,我通常可以使用树视图+面板完整菜单集。