![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Копирование из одного treeview в другой |
|
.NET - Копирование из одного treeview в другой
|
Старожил Сообщения: 329 |
Есть 2 treeview: 1й - основной, 2й - втростепенный, из 2го в 1й перекидываем через drag&drop элементы дерева(как узды, так и дочерние). Так вот, у меня происходит перемещение элементов дерева, а не их копирование.
Как сделать чтобы копировались? Как сделать, что б можно было перемещать дочерние элементы из одного узла в любой другой в любую позицию другого узла? Как сделать, что бы можно было засунуть назад вытащеный за пределы узла дочерний элемент? //Treeview 1 this.ETPTreeView.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeView_ItemDrag); this.ETPTreeView.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeView_DragEnter); this.ETPTreeView.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView_DragDrop); this.ETPTreeView.DragOver += new System.Windows.Forms.DragEventHandler(this.treeView_DragOver); this.ETPTreeView.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.ETPTreeView_AfterCheck); this.ETPTreeView.AfterCollapse += new System.Windows.Forms.TreeViewEventHandler(this.ETPTreeView_AfterCollapse); this.ETPTreeView.AfterLabelEdit += new System.Windows.Forms.NodeLabelEditEventHandler(this.ETPTreeView_AfterLabelEdit); this.ETPTreeView.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.ETPTreeView_NodeMouseClick); this.ETPTreeView.AfterExpand += new System.Windows.Forms.TreeViewEventHandler(this.ETPTreeView_AfterExpand); this.ETPTreeView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.treeView_MouseDown); //treeview 2 this.DonorETPTreeView.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeView_ItemDrag); this.DonorETPTreeView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.treeView_MouseDown); // #region treeView private void treeView_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { if (Control.ModifierKeys == Keys.Control && e.Button == MouseButtons.Left) { ((TreeView)sender).CheckBoxes = true; } } private void treeView_ItemDrag(object sender, System.Windows.Forms.ItemDragEventArgs e) { DoDragDrop(e.Item, DragDropEffects.All); } private void treeView_DragEnter(object sender, System.Windows.Forms.DragEventArgs e) { e.Effect = DragDropEffects.All; } private void treeView_DragOver(object sender, DragEventArgs e) { Point targetPoint = ((TreeView)sender).PointToClient(new Point(e.X, e.Y)); ((TreeView)sender).SelectedNode = ((TreeView)sender).GetNodeAt(targetPoint); } private void treeView_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) { Point pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y)); TreeNodeCollection Nodes; TreeNode DestinationNode = ((TreeView)sender).GetNodeAt(pt); if (DestinationNode == null) Nodes = ((TreeView)sender).Nodes; else Nodes = DestinationNode.Nodes; if (e.Data.GetDataPresent(typeof(DataGridViewSelectedRowCollection))) { //string columnName = DataGridView foreach (DataGridViewRow dr in (DataGridViewSelectedRowCollection)e.Data.GetData(typeof(DataGridViewSelectedRowCollection))) { Nodes.Add(dr.Cells["Материалы"].Value.ToString()); } } else if (e.Data.GetDataPresent(typeof(TreeNode))) { TreeNode NewNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode"); if (DestinationNode == null) { TreeNode tempNode = (TreeNode)NewNode.Clone(); NewNode.Remove(); ((TreeView)sender).Nodes.Add(tempNode); } else { if (DestinationNode.Level < NewNode.Level) { DestinationNode.Nodes.Add((TreeNode)NewNode.Clone()); DestinationNode.Expand(); NewNode.Remove(); } else { // меняем местами if (DestinationNode.Level == NewNode.Level) { TreeNode parent = NewNode.Parent; TreeNode tempNode = (TreeNode)NewNode.Clone(); if (parent != null) { parent.Nodes.RemoveAt(NewNode.Index); if (NewNode.Index > DestinationNode.Index) parent.Nodes.Insert(DestinationNode.Index, tempNode); else parent.Nodes.Insert(DestinationNode.Index + 1, tempNode); } else { ((TreeView)sender).Nodes.RemoveAt(NewNode.Index); if (NewNode.Index > DestinationNode.Index) ((TreeView)sender).Nodes.Insert(DestinationNode.Index, tempNode); else ((TreeView)sender).Nodes.Insert(DestinationNode.Index + 1, tempNode); } } } } } } #endregion |
|
------- Отправлено: 20:40, 09-09-2021 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - Копирование строк из одного файла в другой (excel) | maxim43g | Скриптовые языки администрирования Windows | 4 | 26-11-2020 16:56 | |
CMD/BAT - Копирование строки из одного файла, и запись его в другой (при условии) | Reanosi | Скриптовые языки администрирования Windows | 2 | 18-02-2018 22:31 | |
VBA - Экономное копирование накладных из одного листа в другой для печати (Excel) | Alexander_88 | Microsoft Office (Word, Excel, Outlook и т.д.) | 0 | 26-10-2015 00:31 | |
CMD/BAT - копирование из одного каталога в другой bat файл с помощью параметров | terror572 | Скриптовые языки администрирования Windows | 0 | 18-03-2014 20:16 | |
Копирование писем из одного ящика в другой | ter0pefft | Хочу все знать | 9 | 14-11-2011 10:42 |
|