当在 TreeView 中单击节点时,我正在使用 TreeView 上的单击事件来做一些事情。我通过使用鼠标坐标调用 GetNodeAt() 来获取单击的节点,如下所示:
private void TreeView_Click(object sender, System.EventArgs e)
{
MouseEventArgs mouseEventArgs = e as MouseEventArgs;
if (mouseEventArgs == null)
return;
// Get the node that is being clicked.
TreeNode node = this.GetNodeAt(mouseEventArgs.X, mouseEventArgs.Y);
// Do other stuff...
}
但是,GetNodeAt() 方法仅在单击节点标签时有效,当单击节点图像时,GetNodeAt() 返回 null。这有点烦人,因为单击图像时实际上选择了节点,但我无法找出它是什么节点。
有人有什么建议吗?
更新:我得到了一些使用 SelectedNode 的建议。我不能,因为它是在触发 Click 事件之后设置的。这实际上是在一个继承 TreeView 的控件中,它所做的是触发它自己的 Clicked 事件,但使用 TreeNode 表示的底层数据而不是 TreeNode 本身。
更新:原来有人在我们的代码中重写了 GetNodeAt() 方法,它引入了这种行为,我没有意识到。所以这个问题是无效的,GetNodeAt() 方法没有问题。为什么有人会这样做仍然是个谜。:)