У меня есть элемент управления TreeView в C# Windows приложении, в котором реализована функция перетаскивания. Ниже приведен код для события ItemDrag
.
private void tvwAttributes_ItemDrag(object sender, ItemDragEventArgs e)
{
TreeNode selNode = (TreeNode)e.Item;
tvwAttributes.SelectedNode = selNode;
timer1.Enabled = true;
DoDragDrop(e.Item, DragDropEffects.Move);
}
Ниже приведено событие Tick
для элемента управления таймером, который разрешает автоматическую прокрутку вертикальной полосы прокрутки после перетаскивания узла и перемещения узла вниз или верхняя часть Treeview
элемента управления
private void timer1_Tick(object sender, EventArgs e)
{
//if we hit the timer and no buttons are pressed then stop
if (Control.MouseButtons == MouseButtons.None)
{
timer1.Enabled = false;
return;
}
// get node at mouse position
System.Drawing.Point pt = this.tvwAttributes.PointToClient(Control.MousePosition);
TreeNode node = this.tvwAttributes.GetNodeAt(pt);
if (node == null) return;
// if mouse is near to the top, scroll up
if (pt.Y < 30)
{
// set actual node to the upper one
if (node.PrevVisibleNode != null)
{
node = node.PrevVisibleNode;
// scroll and refresh
node.EnsureVisible();
this.tvwAttributes.Refresh();
}
}
// if mouse is near to the bottom, scroll down
else if (pt.Y > this.tvwAttributes.Size.Height - 30)
{
if (node.NextVisibleNode != null)
{
node = node.NextVisibleNode;
node.EnsureVisible();
this.tvwAttributes.Refresh();
}
}
}
Я хочу реализовать, как показано ниже, для достижения ВЫБОР из ОТ УЗЛА после перетаскивания элемента в пункт назначения узел
//The Source Node is picked as below
TreeNode DragNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");
И после того, как он отброшен, приведенный ниже код я хочу реализовать.
if(DragNode != null)
{
tvwAttributes.SelectedNode = DragNode;
}
Для этого я не знаю точное место, где разместить 2 вышеупомянутых раздела кода.
Любая помощь будет принята с благодарностью.