我想在树视图中获取节点的文本。我正在使用click()
事件。当我使用AfterSelect()
事件时,我可以通过e.Node.text
获取节点文本。如何使用Click()
事件
答案 0 :(得分:7)
我建议不要使用Click
事件。原因是用户可以在TreeView控件上单击不同位置的 lot ,其中许多不对应于实际节点。 AfterSelect
事件是一个更好的选择 - 它是专为此用途而设计的。
除此之外,Click
事件很难使用,因为它不会在处理程序方法中提供很多信息。它不会告诉您单击了哪个按钮,发生了单击事件的位置等。您必须手动检索所有这些信息。建议您订阅MouseClick
或MouseDown
/ 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