【发布时间】:2020-06-04 14:51:11
【问题描述】:
当用户将指针悬停在具有特定命名父节点的节点上时,我需要表单的光标更改为光标Cursors.Hand。
我在实现这一点时遇到的问题是,当用户将指针从关注的TreeNode 移开时,将光标更改回默认值。
我已经处理了TreeView 控件的NodeMouseHover 事件(如最后的sn-p 代码)以将指针更改为备用光标并在指针移动到另一个光标时返回默认光标节点,但这不处理当用户将指针从节点移到TreeView 控件的空白区域时的情况。
关于这个问题的解决方案,我最初的也是唯一的直觉是获取位置并计算 TreeNodes 的区域,这需要更改光标并检查指针是否仍在其中一个TreeView 控件的 MouseMove 事件的事件处理程序,但是,我相信这不是一个优雅的解决方案,因为有很多 TreeNodes 需要这种行为,这需要循环其中很多检查,这反过来可能会导致应用程序在极少数情况下有点无响应。
提前致谢。
PS 有问题的代码 sn-p:
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;
};
【问题讨论】:
标签: c# windows winforms treeview treenode