i have a treeview and trying to move node to parent node(drag and drop),
Is there any way that allows targeted node to show a backcolor while mouse over(left button is still hold with an item dragged)?
[Update] how come following code not work ??
private TreeNode nodeOver=null;
private void treeView_DragOver(object sender, DragEventArgs e)
{
Point p = treeView.PointToClient(new Point(e.X, e.Y));
nodeOver = treeView.GetNodeAt(p.X, p.Y);
nodeOver.BackColor = Color.Aquamarine;
}
private void treeView_DragLeave(object sender, EventArgs e)
{
nodeOver.BackColor = Color.White;
}
You can try something like this:
private void treeView_DragOver(object sender, DragEventArgs e)
{
ClearBackground(treeView.Nodes);
Point p = treeView.PointToClient(new Point(e.X, e.Y));
TreeNode node = treeView.GetNodeAt(p.X, p.Y);
node.BackColor = Color.Aquamarine;
}
private void ClearBackground(TreeNodeCollection nodes)
{
foreach (TreeNode node in nodes)
{
node.BackColor = Color.White;
ClearBackground(node.Nodes);
}
}
Edit
Here's an improved version that shouldn't cause flickering:
private void treeView_DragOver(object sender, DragEventArgs e)
{
Point p = treeView.PointToClient(new Point(e.X, e.Y));
TreeNode node = treeView.GetNodeAt(p.X, p.Y);
if (node.PrevVisibleNode != null)
{
node.PrevVisibleNode.BackColor = Color.White;
}
if (node.NextVisibleNode != null)
{
node.NextVisibleNode.BackColor = Color.White;
}
node.BackColor = Color.Aquamarine;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With