获取点击的节点树视图C#winforms的文本

时间:2010-12-24 15:21:57

标签: c# winforms treeview

我在c#中选择树视图中的节点文本时遇到困难, 想法是获取被点击的节点的文本, 但问题是,当我想像这样抓住它时

MessageBox.Show(treeView1.SelectedNode.Text);

所选节点是先前选中的,而不是我点击的实际节点,那么我怎么能 先选择我点击的节点,然后再抓取他的文字?我认为解决方案是在我获取文本之前调用原始的nodeclick处理程序,但我不知道如何调用它

4 个答案:

答案 0 :(得分:8)

是的,当NodeMouseClick事件触发时,它尚未被选中。您应该使用AfterSelect事件。这确保了当用户使用键盘选择节点时它也可以工作。或者这样做:

    private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) {
        Console.WriteLine(e.Node.Text);
    }

但请注意,可以通过BeforeSelect取消选择。

答案 1 :(得分:3)

您可能正确地尝试访问SelectedNode控件的TreeView属性,然后单击的节点实际设置为已选中。但是,这里的答案不是自己调用事件(导致各种问题,通常是一种不好的做法)。

事实上,有一个更简单的解决方案。 NodeMouseClick event传递了TreeNodeMouseClickEventArgs的实例,其中显示了Node property,表示刚刚点击的节点。

因此,您可以更改代码以只访问该属性:

void treeView1_NodeMouseClick(Object sender, TreeNodeMouseClickEventArgs e)
{
    MessageBox.Show(e.Node.Text);
}

答案 2 :(得分:0)

 private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
 {
    treeView1.SelectedNode = e.Node;
 }

答案 3 :(得分:0)

我使用AfterSelect事件和一个带有Clicked事件的按钮来显示所选节点文本,并且工作正常:

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) {
  Console.WriteLine(e.Node.Text);
}

private void button1_Click(object sender, EventArgs e) {
  Console.WriteLine(treeView1.SelectedNode.Text);
}