当用户将指针悬停在具有特别命名的父节点的节点上时,我需要将窗体的光标更改为光标Cursors.Hand
。
我在实现此功能时遇到的问题是,当用户将指针移离所关注的TreeNode
时,将光标改回默认值。
我已经处理了NodeMouseHover
控件的TreeView
事件(如最后的代码片段所示),以将指针更改为备用光标,并在将指针移至另一个节点时将其更改为默认光标,但是当用户将指针从节点移开到TreeView
控件的空白区域时,这不会处理。
我最初的,也是唯一的解决此问题的直觉是获取位置并计算需要更改光标的TreeNode
的面积,并检查指针是否仍在事件中的其中之一上MouseMove
控件的TreeView
事件的处理程序,但是,我相信,这不是一个很好的解决方案,因为有很多TreeNode
都需要这种行为,这需要循环遍历它们中的许多以进行检查,这又可能导致应用程序在极少数情况下没有响应。
提前感谢。
PS有问题的代码段:
this.treeView.NodeMouseHover += delegate (object sender, TreeNodeMouseHoverEventArgs e)
{
bool isNewCursorAssigned = false;
if (e.Node.Parent != null)
{
if (e.Node.Parent.Text == "someTxt")
{
this.Cursor = Cursors.Hand;
isNewCursorAssigned = true;
}
}
if (isNewCursorAssigned == false && this.Cursor != this.DefaultCursor)
this.Cursor = this.DefaultCursor;
};
我要求表单的光标更改为光标Cursors.Hand,当用户将指针悬停在具有特定名称的父节点的节点上时。我在执行此操作时遇到的问题是...
改为处理MouseMove
,从当前鼠标位置获取Node
,向后迭代以获取当前Parent
的Node
(如果有,则返回父级的父级),然后更改Cursor
]相应地: