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

Jis*_*ian 6 .net c# treeview winforms

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

Cod*_*ray 9

我建议不要使用此Click事件.原因是用户可以在TreeView控件上单击很多不同的地方,其中许多地方与实际节点不对应.该AfterSelect活动是一个更好的选择 - 它是专为此用途而设计的.

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

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

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


Paw*_*anS 5

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

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

 private void treeView1_Click(object sender, EventArgs e)
 {
    MessageBox.Show(treeView1.SelectedNode.Text);
 }
Run Code Online (Sandbox Code Playgroud)

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

treeView1_Click(object sender, EventArgs e)
treeView1_AfterSelect(object sender, TreeViewEventArgs e)
Run Code Online (Sandbox Code Playgroud)

编辑: 在活动中尝试一下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);
 }
Run Code Online (Sandbox Code Playgroud)