private void listBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.All;
else
e.Effect = DragDropEffects.None;
}
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.All;
else
e.Effect = DragDropEffects.None;
}
private void treeView1_AfterCollapse(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
e.Node.ImageIndex=0;
e.Node.SelectedImageIndex=0;
} private void treeView1_AfterExpand(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
e.Node.ImageIndex= 1;
e.Node.SelectedImageIndex=1;
} private void treeView1_ItemDrag(object sender, System.Windows.Forms.ItemDragEventArgs e)
{
DoDragDrop(e.Item, DragDropEffects.Move);
} private void treeView1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
object data = e.Data.GetData(typeof(TreeNode));
if(data!=null)
{
TreeNode dragNode = (TreeNode)data;
if(dragNode.TreeView.Equals(treeView1))
{
e.Effect=DragDropEffects.Move;
}
else
{
e.Effect= DragDropEffects.None;
}
}
else
{
e.Effect= DragDropEffects.None;
}
}
private TreeNode FindNode(int x, int y)
{
Point p = treeView1.PointToClient(new Point(x,y));
TreeNode topNode =treeView1.TopNode;
while(topNode != null)
{
if(topNode.Bounds.Contains(p))
{
return topNode;
}
topNode = topNode.NextVisibleNode;
}
return null;
} private void treeView1_DragOver(object sender, System.Windows.Forms.DragEventArgs e)
{
if(e.Effect == DragDropEffects.Move)
{
TreeNode overNode = FindNode(e.X, e.Y);
if(overNode !=null && !overNode.Equals(oldNode))
{
if(oldNode!=null)
{
oldNode.BackColor = oldNodeBackColor;
oldNode.ForeColor = oldNodeForeColor;
}
oldNode = overNode;
oldNodeBackColor = overNode.BackColor;
oldNodeForeColor = overNode.ForeColor;
TreeNode moveNode = (TreeNode)(e.Data.GetData(typeof(TreeNode)));
if(overNode.Equals(moveNode))
{
overNode.BackColor = Color.Red;
overNode.ForeColor = Color.White;
}
else
{
overNode.BackColor = Color.Green;
overNode.ForeColor = Color.White;
}
}
}
} private void treeView1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
oldNode.BackColor = oldNodeBackColor;
oldNode.ForeColor = oldNodeForeColor;
oldNode = null;
if(e.Effect == DragDropEffects.Move)
{
TreeNode overNode = FindNode(e.X, e.Y);
TreeNode moveNode = (TreeNode)(e.Data.GetData(typeof(TreeNode)));
if(overNode == moveNode)
{
MessageBox.Show(" i con`t move Node", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return ;
}
if(overNode == null)
{
if(moveNode.Parent != null)
{
if(moveNode.Parent.Nodes.Count ==1)
{
moveNode.Parent.ImageIndex = 2;
moveNode.Parent.SelectedImageIndex = 2;
}
moveNode.Remove();
treeView1.Nodes.Add(moveNode);
}
}
else if(overNode.Parent == moveNode.Parent)
{
if(overNode.Nodes.Count !=0)
{
if(moveNode.Parent !=null)
{
if(moveNode.Nodes.Count == 1)
{
moveNode.Parent .ImageIndex = 2;
moveNode.Parent.SelectedImageIndex = 2;
}
}
moveNode.Remove();
overNode.Nodes.Add(moveNode);
overNode.Expand();
overNode.ImageIndex =1;
}
}
else if(overNode.Nodes.Count == 0)
{
if(moveNode.Parent != null)
{
if(moveNode.Parent.Nodes.Count == 1)
{
moveNode.Parent.ImageIndex = 2;
moveNode.Parent.SelectedImageIndex = 2;
}
}
moveNode.Remove();
if(overNode.Parent != null)
{
overNode.Parent.Nodes.Add(moveNode);
}
else
{
treeView1.Nodes.Add(moveNode);
}
}
else if(moveNode.Parent ==null || !moveNode.Parent.Equals(overNode))
{
if(moveNode.Parent != null)
{
if(moveNode.Parent.Nodes.Count == 1)
{
moveNode.Parent.ImageIndex = 2;
moveNode.Parent.SelectedImageIndex = 2;
}
}
moveNode.Remove();
overNode.Nodes.Add(moveNode);
overNode.Expand();
overNode.ImageIndex = 1;
}