Страница: 1 |
Страница: 1 |
Вопрос: Drag-n-Drop из контрола в контрол
Добавлено: 30.05.08 09:03
Автор вопроса: Старый
Доброго дня, господа!
Только начинаю, но уже с амбициями неуемными лезу (поиск по форуму работает не очень нормально, все время виснет, поэтому найти подобные обсуждаения не удалось ).
Интересует вот какой вопрос ( vs2005, vb.net ):
на форме DataGridView (список) и TreeView (папки). В каждой строке списка в первом скрытом столбце хранится код папкм в дереве. Необходим код, который позволит реализовать механизм Drag-n-Drop по перетаскиванию строки в другую папку.
Вроде бы все просто, надо выделить строку в DataGridView, затем не отпуская ЛКМ вести указатель мыша к дереву, а там считать код выделенной указателем папки и заменить данные в строке DataGridView
Но как это реализовать не знаю. Помогите, научите, если можно то код подскажите :)
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #1
Добавлено: 31.05.08 23:55
Нет, там должны быть события специально для D-n-D. Так что ты не в ту сторону смотришь, ловить кнопки и координаты мыши здесь не нужно.
Номер ответа: 2
Автор ответа:
__Pavel__
Вопросов: 29
Ответов: 284
Web-сайт:
Профиль | | #2
Добавлено: 01.06.08 23:53
На... кинь на форму 2 листбокса... это пример, надеюсь разберешься:
Private Sub ListBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown
ListBox1.DoDragDrop(ListBox1.Text, DragDropEffects.Copy Or DragDropEffects.Move)
End Sub
Private Sub ListBox2_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox2.DragDrop
ListBox2.Items.Add(e.Data.GetData(DataFormats.Text).ToString)
End Sub
Private Sub ListBox2_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox2.DragEnter
If (e.Data.GetDataPresent(DataFormats.Text)) Then
e.Effect = DragDropEffects.Copy
Else
e.Effect = DragDropEffects.None
End If
End Sub
Private Sub Перемещение_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ListBox2.AllowDrop = True
ListBox1.Items.Add("111"
ListBox1.Items.Add("222"
ListBox1.Items.Add("333"
ListBox1.Items.Add("444"
ListBox1.Items.Add("555"
End Sub
End Class
Номер ответа: 3
Автор ответа:
Старый
Вопросов: 6
Ответов: 13
Профиль | | #3
Добавлено: 02.06.08 09:46
2 _Pavel__
Спасибо, код с листбоксами работает. Однако одна загвоздка так и осталась на поверхности. При переносе, "процесс" фиксирует только контрол ( в данном случае Listbox2 ), в который можно перенести данные, однако не выделяет строки в данном контроле. Для этого есть свойство какое-то у LB или надо код вручную писать и не смотря на предостережения ( см. первый ответ ) все же ловить координаты мыши ?
С уважением и благодарностью
Номер ответа: 4
Автор ответа:
__Pavel__
Вопросов: 29
Ответов: 284
Web-сайт:
Профиль | | #4
Добавлено: 02.06.08 17:18
я тоже новичек... почти... я этим еще не занимался, так что не знаю как это делать =(