Форум программистов, компьютерный форум, киберфорум
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. Показов 6756. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью. Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru