C#, WinForms - DragDrop au sein de la même TreeViewControl
Je suis d'essayer de mettre en œuvre un glisser-déplacer d'un treeview élément au sein de la même contrôle.
Je veux être en mesure de déplacer un élément à partir de 1 nœud à un autre.
Voici mon code actuel, Lorsque je l'exécute, je peux voir que l'article a commencé à glisser, mais l'icône de windows ne le permettra pas être abandonné à tous les nœuds sur le Contrôle.
Mon code actuel
private void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
{
DoDragDrop(e.Item, DragDropEffects.Move);
}
private void treeView1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void treeView1_DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(typeof(TreeNode)))
{
TreeNode sourceNode = e.Data.GetData(typeof(TreeView)) as TreeNode;
var item = new TreeNode(sourceNode.Text);
System.Drawing.Point pt = ((TreeView)sender).PointToClient(new System.Drawing.Point(e.X, e.Y));
TreeNode DestinationNode = ((TreeView)sender).GetNodeAt(pt);
DestinationNode.Nodes.Add(item);
DestinationNode.Expand();
}
}
OriginalL'auteur IEnumerable | 2014-01-04
Vous devez vous connecter pour publier un commentaire.
Juste modifier
treeView1_DragDrop
fonction:Je sais que @Francesco B., a été la résolution de ce les personnes problème spécifique, mais pensé que je pourrais ajouter, insérer la ligne suivante en haut de la fonction "TreeView treeView1 = (TreeView) sender;" il devient un peu plus réutilisable.
Notez que si vous avez créé votre propre classe TreeNode, vous devez utiliser ce type de nom dans l'appel à l'e.Les données.GetData, ou draggedNode devient nulle.
OriginalL'auteur Francesco Bonizzi
Ensemble
AllowDrop=true
sur le contrôle d'arborescence.OriginalL'auteur Gary
Un peu plus des améliorations et des ajouts à la DragDrop gestionnaire pour aller avec toutes les autres révisions.
Ajout Du Support:
l'utilisateur peut devenir confus par ce qui est actuellement en montrant vs ce nœud est sélectionné.
Remarque: assurez-vous et AllowDrop=true sur le contrôle treeview sinon, vous ne pouvez pas laisser tomber les nœuds.
OriginalL'auteur GrayDwarf
légèrement version améliorée qui vous empêche de déposer un nœud sur lui-même ou l'un de ses descendants
OriginalL'auteur mrpurple