Мне требуется, чтобы курсор формы изменился на курсор Cursors.Hand
, когда пользователь наводит указатель мыши на узел со специально названным родительским узлом.
Проблема, с которой я сталкиваюсь при реализации, касается изменение курсора обратно на значение по умолчанию, когда пользователь перемещает указатель от рассматриваемого TreeNode
.
Я обработал событие NodeMouseHover
элемента управления TreeView
(как в фрагменте кода в конец), чтобы изменить указатель на альтернативный курсор и вернуться к курсору по умолчанию, когда указатель перемещается на другой узел, но это не относится к случаю, когда пользователь перемещает указатель от узлов к, скажем, пробелу область элемента управления TreeView
.
Моя первоначальная и единственная интуиция в отношении решения этой проблемы заключалась в том, чтобы получить местоположение и вычислить область TreeNode
s, для которой требуется изменить и проверить курсор если указатель все еще находится на одном из них на обработчике события MouseMove
элемента управления TreeView
, но, я полагаю, Это не элегантное решение, так как существует множество TreeNode
s, требующих такого поведения, которое потребовало бы циклического перебора многих из них для проверки, что, в свою очередь, может привести к тому, что приложение в редких случаях ios будет немного не отвечает.
Заранее спасибо.
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;
};