gpt4 book ai didi

C# TreeView.GetNodeAt() 单击图像的问题

转载 作者:行者123 更新时间:2023-12-04 00:26:04 24 4
gpt4 key购买 nike

当在 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()方法没有问题。为什么有人会这样做仍然是个谜。 :)

最佳答案

您尝试过 BeforeSelect 或 AfterSelect 事件吗?您可以直接从 TreeViewCancelEventArgs 获取选定的节点,然后在 Click 事件中使用它。

编辑:附加想法:我能看到的唯一问题是 BeforeSelect 事件实际上在 Click 和 MouseClick 事件之后触发。

另一个编辑:如果您需要在 Click 之前触发的事件,您可以使用 NodeMouseClick - TreeNodeMouseClickEventArgs 有一个 Node 属性。

关于C# TreeView.GetNodeAt() 单击图像的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/678373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com