Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
7 / 7 / 8
Регистрация: 11.04.2012
Сообщений: 87

Не перетаскивается выбранная строка на TreeView

27.11.2012, 07:07. Показов 1234. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите мне, пожалуйста, почему происходят такие странные вещи О_О

Есть дерево TreeView и таблица DGV
Из таблицы надо переместить документ в дерево

C#
1
2
3
4
5
6
private void _Events()
        {
            this.treeView.DragEnter += new DragEventHandler(treeView_DragEnter);
            this.treeView.DragDrop += new DragEventHandler(treeView_DragDrop);
            this.rgvDrag.MouseDown += new MouseEventHandler(rgvDrag_MouseDown);
        }
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
private void rgvDrag_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                this.rgvDrag.DoDragDrop(this.rgvDrag.SelectedRows[0].Cells[1].Value.ToString(), DragDropEffects.Copy | DragDropEffects.Move);
            }
        }
 
        private void treeView_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.Text))
            {
                e.Effect = DragDropEffects.Copy;
            }
            else
            {
                e.Effect = DragDropEffects.None;
            }
        }
 
        private void treeView_DragDrop(object sender, DragEventArgs e)
        {
            Point p = treeView.PointToClient(new Point(e.X, e.Y));
            RadTreeNode hoverNode = treeView.GetNodeAt(p.X, p.Y);            
            if (hoverNode == null)
            {
                RadMessageBox.Show("Не выбран узел номенклатуры", "Ошибка", MessageBoxButtons.OK, RadMessageIcon.Error);
                return;
            }
            RadMessageBox.Show(hoverNode.Value.ToString()); // показать IDузла для записи в БД
            //hoverNode.Nodes.Add(e.Data.GetData(DataFormats.Text).ToString());
        }
Если выбрать строку и переместить в дерево, то все отлично работает. НО! Если выбрать строку, которая выбрана в данный момент (в данном случае по рисунку с 11 айдишником), он даже не начинает перемещать строку.
Т.е. если строка не выбрана, он ее легко перемещает и потом выделяет. А если она не выбрана, то вообще на перемещение никак не реагирует. О_О
Миниатюры
Не перетаскивается выбранная строка на TreeView  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.11.2012, 07:07
Ответы с готовыми решениями:

Определить какая строка выбранная в ListView
Подскажите как определить какая строка выбрана в ListView? я использовал код foreach (ListViewItem item in...

Как написать команду, чтобы на экран выводилась выбранная строка?
как написать команду, чтобы выводилась на экран та строка, которую я выберу??? static void Main(string args) { ...

Нужно, чтобы по нажатию кнопки выбранная строка переносилась в другой текстовый файл
Как сделать это : в программе нужно, чтобы по нажатию кнопки выбранная строка из текстового файла переносилась в другой текстовый файл, а...

2
 Аватар для Doomer3D
180 / 180 / 32
Регистрация: 23.11.2012
Сообщений: 344
Записей в блоге: 1
27.11.2012, 08:20
А что за интересный грид у вас? Киньте ссылочку плиз.

По теме: скорее всего начинает обрабатываться другое событие мыши (мб выделение строк?). Либо надо его отключить, либо принудительно вызывать Drag.
0
7 / 7 / 8
Регистрация: 11.04.2012
Сообщений: 87
27.11.2012, 08:35  [ТС]
По поводу грида: могу кинуть dll на мыло.
По поводу темы: пробовал - такая же непонятная штука происходит. Сделал по-другому и все работает:

C#
1
2
3
4
5
6
7
private void _Events()
        {
            this.gvFiles.MouseDown += new MouseEventHandler(gvFiles_MouseDown);
            this.gvFiles.MouseMove += new MouseEventHandler(gvFiles_MouseMove);
            this.gvFiles.MouseUp += new MouseEventHandler(gvFiles_MouseUp);
            //this.treeView.DragEnter += new DragEventHandler(treeView_DragEnter);
        }
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
Point downPt;
        bool dragging;
 
private void gvFiles_MouseDown(object sender, MouseEventArgs e)
        {
            downPt = e.Location;
        }
 
        private void gvFiles_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                if (!dragging && IsRealDrag(e.Location, downPt))
                {
                    RadElement element = this.gvFiles.ElementTree.GetElementAtPoint(e.Location);
                    GridDataCellElement cell = element as GridDataCellElement;
                    if (cell != null && cell.RowElement is GridDataRowElement)
                    {
                        dragging = true;
                        this.gvFiles.Capture = true;
                        //this.gvFiles.Cursor = Cursors.Hand;
                    }
                }
            }
        }
 
        private void gvFiles_MouseUp(object sender, MouseEventArgs e)
        {
            if (dragging)
            {
                Point p = this.gvFiles.PointToScreen(e.Location);
                p = this.PointToClient(p);
                RadTreeNode hoverNode = treeView.GetNodeAt(p);
                if (hoverNode == null)
                {
                    RadMessageBox.Show("Не выбран узел номенклатуры", "Ошибка", MessageBoxButtons.OK, RadMessageIcon.Error);
                    return;
                }
                RadMessageBox.Show(hoverNode.Value.ToString());
                dragging = false;
            }
        }
 
        private static bool IsRealDrag(Point mousePosition, Point initialMousePosition)
        {
            return (Math.Abs(mousePosition.X - initialMousePosition.X) >= SystemInformation.DragSize.Width) ||
                (Math.Abs(mousePosition.Y - initialMousePosition.Y) >= SystemInformation.DragSize.Height);
        }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.11.2012, 08:35
Помогаю со студенческими работами здесь

MovieTexture не перетаскивается видео
Странно но не могу прикрепил .mp4 видео к MovieTexture, все делаю как в уроке на ютьюбе( как быть?

Строка в TreeView
Есть дерево элементов. в таком виде: Первый 0 Второй 0 Третий 0 0 это количество обращений к строке TreeView->Selected; ...

Devexpress. Поле узла TreeList, который перетаскивается, не обновляется в таблице базы данных
Использую - Devexpress. Источником данных является база данных Access; Подключение к базе данных - через код; После...

Куда исчезает строка из Node.Data (TreeView)?
Приветствую всех! Просьба не смеяться, что задача банальная и дочитать сообщение до конца. Допустим,имеется 1 таблица базы со...

Как в TreeView выделить узел, чтобы подсвеченным был не только сам текст узла, а полностью вся строка с узлом ?
Как в TreeView выделить узел, чтобы подсвеченным был не только сам текст узла(рис 1), а полностью вся строка с узлом(рис2) ? Заранее...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru