gpt4 book ai didi

c# - 如何在拖动时突出显示目标节点

转载 作者:行者123 更新时间:2023-11-30 19:19:47 24 4
gpt4 key购买 nike

我有一个 TreeView 并试图将节点移动到父节点(拖放),

有什么方法可以让目标节点在鼠标悬停时显示背景颜色(左键仍然按住并拖动项目)?

[更新]为什么下面的代码不起作用??

    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;
}

最佳答案

你可以尝试这样的事情:

    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);
}
}

编辑

这是一个不会引起闪烁的改进版本:

    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;
}

关于c# - 如何在拖动时突出显示目标节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8146705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com