6

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

4

3 回答 3

10

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

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

要弄清楚用户点击了什么,你需要使用TreeView.HitTest方法,它返回一个TreeViewHitTestInfo对象,其中包含用户点击区域的详细信息,或者更简单的TreeView.GetNodeAt方法,null如果在点击。

或者,要随时获取当前选择的节点,您只需查询TreeView.SelectedNode属性即可。如果没有选择节点,这也将返回null

于 2013-05-09T08:52:54.210 回答
5

最好使用treeView1_AfterSelect()事件,因为这会给出正确的选定节点文本。该treeView1_Click()事件将显示最旧的未选择,而不是立即选择的。

Click您可以在事件上实现选定的节点文本

 private void treeView1_Click(object sender, EventArgs e)
 {
    MessageBox.Show(treeView1.SelectedNode.Text);
 }

Click()请记住,和event之间的区别AfterSelect()是它们的 eventargs

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);
 }
于 2013-05-09T08:54:23.130 回答
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
于 2016-08-04T21:37:09.037 回答