Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выделение нода TreeView при перетаскивании 
:(
    Опции темы
Dimkostav
Дата 10.6.2010, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 20.1.2009

Репутация: нет
Всего: нет



Здравствуйте, товарищи программисты!
Есть на форме ListBox1 и TreeView1. при выделении определённого нода TreeView1 ListView1 заполняется соответствующими значениями. Т.е. TreeView1 содержит группы, а ListView1 содержит значения в этих группах. Пытаюсь реализовать перетаскивание содержимого в группах между группами. Т.е. берём элемент в ListBox1, тащим его к дереву с нодами и... Нод не выделяется, т.е. хотелось бы получить значение выделенного нода.
Нашёл на msdn примеры и немного переделал.

Вот события
Код

    Private Sub ListView_ItemDrag(ByVal sender As Object, ByVal e As  _
   System.Windows.Forms.ItemDragEventArgs) Handles ListView1.ItemDrag

        Dim myItems(sender.SelectedItems.Count - 1) As ListViewItem
        Dim i As Integer = 0

        ' Loop though the SelectedItems collection for the source.
        For Each myItem In sender.SelectedItems
            ' Add the ListViewItem to the array of ListViewItems.
            myItems(i) = myItem
            i = i + 1
        Next
        ' Create a DataObject containg the array of ListViewItems.
        sender.DoDragDrop(New  _
        DataObject("System.Windows.Forms.ListViewItem()", myItems), DragDropEffects.Move)
    End Sub


 Private Sub ListView_DragEnter(ByVal sender As Object, ByVal e As  _
   System.Windows.Forms.DragEventArgs) Handles ListView1.DragEnter
        ' Check for the custom DataFormat ListViewItem array.
        If e.Data.GetDataPresent("System.Windows.Forms.ListViewItem()") Then
            e.Effect = DragDropEffects.Copy
        Else
            e.Effect = DragDropEffects.None
        End If
    End Sub


 Private Sub ListView_DragDrop(ByVal sender As Object, ByVal e As  _
    System.Windows.Forms.DragEventArgs) Handles ListView1.DragDrop
        Dim myItems() As ListViewItem = e.Data.GetData("System.Windows.Forms.ListViewItem()")
        Dim i As Integer = 0

        For Each myItem In myItems
            ' Add the item to the target list.
            sender.Items.Add(myItems(i).Text)

            ' Remove the item from the source list.
            If sender Is ListView1 Then

            Else
                ListView1.Items.Remove(ListView1.SelectedItems.Item(0))
            End If
            i = i + 1
        Next
End Sub

    Private Sub TreeView1_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TreeView1.DragEnter
        If e.Data.GetDataPresent("System.Windows.Forms.ListViewItem()") Then
            e.Effect = DragDropEffects.Move
        Else
            e.Effect = DragDropEffects.None
        End If
    End Sub



Пока что сделал, чтобы при отпускании мыши появилось новое окно с выбором куда же значение из ListBox1 девать:

Код

   Private Sub TreeView1_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TreeView1.DragDrop
        FormMoveTask.task = ListView1.SelectedItems.Item(0).Text & ";" & ListView1.SelectedItems.Item(0).SubItems(1).Text & ";" & ListView1.SelectedItems.Item(0).SubItems(2).Text & ";" & ListView1.SelectedItems.Item(0).SubItems(3).Text & ";" & ListView1.SelectedItems.Item(0).SubItems(4).Text
        FormMoveTask.Show()
    End Sub


Наверно нужно что-то делать с указателем мыши в предпоследней процедуре (TreeView1_DragEnter), чтобы появилось возможность при наведении выделять нужный нод.
Спасибо.
PM MAIL   Вверх
diadiavova
Дата 10.6.2010, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Ты описываешь работу с графическим интерфейсом словами. Представить это нпросто, так что если выложишь пример проекта с описанной проблемой - твои шансы получить помощь сильно возрастут. smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.1020 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.