我想在树视图中获取节点的文本。我正在使用该click()
事件。当我使用该AfterSelect()
事件时,我可以通过e.Node.text
. 如何使用Click()
事件获取文本
3 回答
我不建议Click
为此使用事件。原因是用户可以在 TreeView 控件上单击许多不同的位置,其中许多位置与实际节点不对应。AfterSelect
事件是一个更好的选择——它是为这种用途而设计的。
除此之外,该Click
事件很难使用,因为它在处理程序方法中没有为您提供太多信息。它不会告诉您单击了哪个按钮、单击事件发生的位置等。您必须手动检索所有这些信息。建议您改为订阅 theMouseClick
或MouseDown
/MouseUp
事件。
要弄清楚用户点击了什么,你需要使用TreeView.HitTest
方法,它返回一个TreeViewHitTestInfo
对象,其中包含用户点击区域的详细信息,或者更简单的TreeView.GetNodeAt
方法,null
如果在点击。
或者,要随时获取当前选择的节点,您只需查询TreeView.SelectedNode
属性即可。如果没有选择节点,这也将返回null
。
最好使用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);
}
我找到了一种对我有用的方法,我花了一段时间才完成我想要的,但它确实有效。
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