我建议不要使用此Click事件.原因是用户可以在TreeView控件上单击很多不同的地方,其中许多地方与实际节点不对应.该AfterSelect活动是一个更好的选择 - 它是专为此用途而设计的.
除此之外,该Click事件相当难以使用,因为它不会在处理程序方法中为您提供太多信息.它不会告诉您单击了哪个按钮,发生了单击事件的位置等.您必须手动检索所有这些信息.建议您订阅MouseClick或者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);
}
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)