如何在click事件中获取treeView的节点文本

时间:2013-05-09 08:38:46

标签: c# .net winforms treeview

我想在树视图中获取节点的文本。我正在使用click()事件。当我使用AfterSelect()事件时,我可以通过e.Node.text获取节点文本。如何使用Click()事件

获取文字

3 个答案:

答案 0 :(得分:7)

我建议不要使用Click事件。原因是用户可以在TreeView控件上单击不同位置的 lot ,其中许多不对应于实际节点。 AfterSelect事件是一个更好的选择 - 它是专为此用途而设计的。

除此之外,Click事件很难使用,因为它不会在处理程序方法中提供很多信息。它不会告诉您单击了哪个按钮,发生了单击事件的位置等。您必须手动检索所有这些信息。建议您订阅MouseClickMouseDown / MouseUp活动。

要弄清楚用户点击了什么,您需要使用TreeView.HitTest方法,该方法返回一个TreeViewHitTestInfo对象,其中包含有关用户点击的区域的详细信息,或稍微简单TreeView.GetNodeAt {3}}方法,如果点击位置没有节点,则只返回null

或者,要随时获取当前选定的节点,您只需查询TreeView.SelectedNode属性即可。如果未选择任何节点,则还将返回null

答案 1 :(得分:3)

最好使用treeView1_AfterSelect()事件,因为它会提供正确的选定节点文本。 treeView1_Click()事件将显示最早选择的不是,而不是立即选择的事件。

您可以在Click事件

上实现所选节点文字
 private void treeView1_Click(object sender, EventArgs e)
 {
    MessageBox.Show(treeView1.SelectedNode.Text);
 }

请注意,Click()AfterSelect()事件之间的差异是他们的事件标记

treeView1_Click(object sender, EventArgs e)
treeView1_AfterSelect(object sender, TreeViewEventArgs e)

修改Click()事件中尝试此操作,我相信这会对您有所帮助。

 private void treeView1_Click(object sender, EventArgs e)
 {
   TreeViewHitTestInfo info = treeView1.HitTest(treeView1.PointToClient(Cursor.Position));
   if (info != null)
     MessageBox.Show(info.Node.Text);
 }

答案 2 :(得分:0)

我发现了一种对我有用的方法,我花了一段时间才能做到我想要的但是它有效。

Private Sub toolStripButton7_Click(sender As Object, e As EventArgs) Handles ToolStripButton7.Click

          Dim node As TreeNode = treeView1.SelectedNode
          Dim strRootPath As String = My.Settings.DefaultRootPath

          Dim strNode As String = treeView1.SelectedNode.Text

          Call treeViewRoot(strRootPath)

          Dim nodes As TreeNode() = treeView1.Nodes.Find(strRootPath & "\" & strNode, True)

          For Each node In nodes

                 treeView1.Focus()
                 treeView1.SelectedNode = node

          Next
End Sub