Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перетаскивание 
:(
    Опции темы
Compositum
Дата 27.10.2010, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Senior developer
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 430
Регистрация: 6.1.2008
Где: Санкт-Петербург

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



Добрый день.
.Net 3.5 SP1
Имеется List<MyTable>, который назначен в качестве источника данных для ListBox. Для ItemsTemplate этого ListBox назначен шаблон. 
Помимо контрола ListBox, в окошке имеется контрол TreeView, которому задан источником List<MyTableGroup>. Нужно реализовать перетаскивание мышкой элементов с ListBox на TreeView. 
При этом в ListBox может быть выбрано несколько элементов за одно перетаскивание. Если по простому - я перетаскиванием помещаю таблицу в определённую группу (смысл такой). В классе MyTableGroup имеется List<MyTable>, вот в него автоматом должен добавляться перетаскиваемый объект.

Проблемные моменты:
1. Я знаю, как перетащить обычный текст, для этого - методу GetData в качестве параметра передаётся  DataFormats.Text. Т.е. с простеньким перетаскиванием проблем не возникает. А вот как быть в том случае, если у меня свой класс (помеченный как Serializable)? Его ведь нет в имеющемся у DataFormats перечислении...

2. Как грамотней указать, что перетаскивание должно работать для всех элементов, упакованных в источнике данных для моего ListBox (в данной ситуации, это объекты из List<MyTable>), чтобы не привязывать в цикле каждый из них к обработчику событий?

3. Как грамотней указать в какой итем из TreeView следует добавить перетаскиваемый объект, чтобы не привязывать в цикле каждый из них к обработчику событий?
PM   Вверх
Compositum
Дата 27.10.2010, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Senior developer
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 430
Регистрация: 6.1.2008
Где: Санкт-Петербург

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



пытался сделать так:
Код

        /// <summary>
        /// Добавление или удаление таблиц из состава выбранного набора
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void listTemplates_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ListBox lb = (ListBox)sender;
            if (lb.SelectedItems.Count != 0)
            {
                x.Table[] tables = lb.SelectedItems.OfType<x.Table>().ToArray();
                DragDrop.DoDragDrop(lb, tables, DragDropEffects.Move);
            }  
        }

        /// <summary>
        /// Начало перетаскивания выбранных таблиц
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void listTemplates_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.Serializable))
            {
                e.Effects = DragDropEffects.Move;
            }
            else
            {
                e.Effects = DragDropEffects.None;
            }
        }

        /// <summary>
        /// Принимаем перетаскиваемые таблицы
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void treeGroups_Drop(object sender, DragEventArgs e)
        {
            TreeView xx = (TreeView)sender;
            x.Group g = (x.Group)xx.SelectedItem;
            x.Table t = (x.Table) e.Data.GetData(DataFormats.Serializable);
            g.Tables.Add(t);
        }

однако в строке 
Код

x.Table t = (x.Table) e.Data.GetData(DataFormats.Serializable);

получаю null.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




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


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

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