Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/34: Рейтинг темы: голосов - 34, средняя оценка - 4.62
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
.NET 4.x

Drag&Drop нескольких записей из dataGridView в treeView

31.08.2021, 20:23. Показов 6854. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Как сделать по одной записи я знаю (код ниже)
В dataGridView есть мультивыделение, поэтому и встал вопрос, как сделать чтоб перетаскивать на treeView сразу несколько записей?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        private DataTable dtSource = new DataTable();
        private string dragedItemText;
 
        public Form1()
        {
            InitializeComponent();
            dataGridView1.AllowDrop = true;
            treeView1.AllowDrop = true;
 
            dragedItemText = "";
            dtSource.Columns.Add("Column1", typeof(string));
            dtSource.Rows.Add("Item1");
            dtSource.Rows.Add("Item2");
            dtSource.Rows.Add("Item3");
 
            dataGridView1.DataSource = dtSource;
 
            dataGridView1.MouseDown += new MouseEventHandler(dataGridView1_MouseDown);
            treeView1.DragEnter += new DragEventHandler(treeView1_DragEnter);
            treeView1.DragDrop += new DragEventHandler(treeView1_DragDrop);
        }
 
        void treeView1_DragDrop(object sender, DragEventArgs e)
        {
            Point pt;
            TreeNode destinationNode = new TreeNode();
            pt = treeView1.PointToClient(new Point(e.X, e.Y));
            destinationNode = treeView1.GetNodeAt(pt);
            TreeNode dragedNode = new TreeNode();
            dragedNode.Text = dragedItemText;
            if (destinationNode == null)
            {
                treeView1.Nodes.Add(dragedNode.Text);
            }
            else
            { 
                destinationNode.Nodes.Add(dragedNode.Text);
            }
            dragedItemText = "";
        }
 
        void treeView1_DragEnter(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.Copy;
        }
 
        void dataGridView1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                dragedItemText = dataGridView1.CurrentCell.Value.ToString();
                dataGridView1.DoDragDrop(dragedItemText, DragDropEffects.Copy);
            }
        }
    }
}
Я так понимаю, надо перебирать содержимое sender?
и сразу ещё вопрос - как это сделать чтоб было для treeView1...treeViewN?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.08.2021, 20:23
Ответы с готовыми решениями:

Drag&Drop
На форме есть 2 TextBoxа. Из одного текстбокса можно перетаскивать в другой слова и мне не понятно некоторые моменты private void...

Drag&Drop
Задача заключается в следующем: Есть два елемента Panel, на которых расположены какие то контролы (допустим кнопки). Как сделать...

Drag & Drop ListView
Подскажите пожалуйста, с чего начать: нужно перетаскивать елементы с одного лист вью в другой и наоборот. lLV - левый ЛистВью и есть еще...

24
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
09.09.2021, 06:55  [ТС]
Студворк — интернет-сервис помощи студентам
sfumatori, у меня всего 1 столбец, то есть у него Columns[0], верно? Так как это использовать в DataGridViewSelectedCollection или DataGridViewRow?
0
148 / 92 / 56
Регистрация: 03.02.2021
Сообщений: 284
09.09.2021, 09:09
Лучший ответ Сообщение было отмечено blackeangel как решение

Решение

А, в этом плане "не зависело от имени столбца"! Да, если вы точно знаете, какой по счету будет столбец, то можете обращаться по его индексу как и по имени: dr.Cells["Материалы"] == dr.Cells[0]. Никакой разницы
1
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
09.09.2021, 09:21  [ТС]
sfumatori, dr.Cells[0] даёт содержимое выделенной ячейки, а не имя столбца, уже проверил.

Добавлено через 9 минут
Всё заработало, спасибо
0
148 / 92 / 56
Регистрация: 03.02.2021
Сообщений: 284
09.09.2021, 09:23
Лучший ответ Сообщение было отмечено blackeangel как решение

Решение

dr.DataGridView.Columns[0].Name
1
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
14.12.2021, 16:26  [ТС]
sfumatori, Здравствуйте. Теперь я пытаюсь сделать перетаскивание из другой формы и другого DataGridView, хватая за сами ячейки. Ваш код отлавливает это событие, но вот дальше как этим работать - не знаю. Не подскажите?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.12.2021, 16:26

Проблема с Drag & Drop
Не работает Drag & Drop на форме. Я знаю, что вопрос был задан уже много раз, но я уже прочел весь архив вариантов решения из гугла. Почти...

Drag&drop в checkedListBox
В общем дело такое. У нас на форме 2 checkedListBox , и нужно из одного перетащить пункты во 2 и наоборот. Это конечно можно реализовать...

Drag & Drop с проверкой идентичности name
В общем и целом хочу реализовать перетаскивания объекта класса ingridients ( картинки ) на объект класса ingridients ( картинку ) только...

Drag&Drop в модальной форме
Всем добра читающие. Помогите разобраться. Хочу реализовать Drag & Drop (DD) но почему то не хочет работать в дочерней форме. Когда...

Drag&Drop перенести txt в List
Как сделать при переносе txt файла на GroubBox считывание строк и добавление в List?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru