Вы можете попробовать обработать событие MouseMove
, выполнить определенное тестирование, чтобы узнать, какой узел перемещен, а затем изменить курсор. Следующий код должен делать то, что вы хотите, я полагаю, что узлы, которые можно перетаскивать, будут иметь курсор Hand, в противном случае отображается стрелка Arrow.
HashSet<TreeNode> specialNodes = new HashSet<TreeNode>();
//MouseMove event handler for your treeView1
private void treeView1_MouseMove(object sender, MouseEventArgs e) {
var ht = treeView1.HitTest(e.Location);
if (specialNodes.Contains(ht.Node) &&
ht.Location == TreeViewHitTestLocations.Label) {
treeView1.Cursor = Cursors.Hand;
}
else treeView1.Cursor = Cursors.Arrow;
}
//Usage
//add some node first
specialNodes.Add(treeView1.Nodes[0]);
//Then try moving your mouse over the node 0
Вы должны добавить свои узлы, которые должны быть указаны в качестве перетаскиваемым к HashSet sepcialNodes
, это до вас. Использование hashset поможет повысить производительность, если у вас много узлов.
В случае, если вы не знаете, как зарегистрировать обработчик выше событие MouseMove
, попробуйте добавить этот код в форме конструктора (после InitializeComponent
):
treeView1.MouseMove += treeView1_MouseMove;