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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Drag & Drop 
:(
    Опции темы
Kano
Дата 6.3.2010, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Необходимо реализовать копирование элементов из одного ListView в другой. Разобраться не могу...

Есть ли хороший русскоязычный источник информации по данной теме?
PM MAIL   Вверх
6axyc
Дата 6.3.2010, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



смари на русскоязычный источник ссылки ненаю, но пример могу подогнать
Код

        private void textBox1_MouseDown(object sender, MouseEventArgs e)
        {
            Control c = sender as Control;
            c.DoDragDrop(c, DragDropEffects.Move); 
        }


        private void Form1_DragDrop(object sender, DragEventArgs e)
        {
            Control c = e.Data.GetData(e.Data.GetFormats()[0]) as Control;
            if (c != null)
            {
                c.Location = this.PointToClient(new Point(e.X, e.Y));
                this.Controls.Add(c);
            }
        }


        private void Form1_DragOver(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.All;
        }


надеюсь разберешься, если нет то помогу.

PM MAIL   Вверх
CYBERDREAM
Дата 6.3.2010, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

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



могу дать сэмпл (Однако контент не является рускоязычным smile )

Добавлено через 3 минуты и 31 секунду
Код

private void listView1_DragDrop(object sender, DragEventArgs e)
        {
            string textBox1 = e.Data.GetData(DataFormats.Text).ToString();
            string[] items = textBox1.Split(',');
            listView1.Items.Add(new ListViewItem(items, 0));
            lv1_mdown = false;
            lv2_mdown = false;
        }

        private void listView2_DragDrop(object sender, DragEventArgs e)
        {
            string textBox1 = e.Data.GetData(DataFormats.Text).ToString();
            string[] items = textBox1.Split(',');
            listView2.Items.Add(new ListViewItem(items, 0));
            lv2_mdown = false;
            lv1_mdown = false;
        }

        private void listView2_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.Text))
                e.Effect = DragDropEffects.Copy;
            else
                e.Effect = DragDropEffects.None;
        }

        private void listView1_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.Text))
                e.Effect = DragDropEffects.Copy;
            else
                e.Effect = DragDropEffects.None;
        }

        private void listView1_MouseMove(object sender, MouseEventArgs e)
        {
            if (! lv1_mdown) return;
            if (e.Button == MouseButtons.Right) return;

            string str = GetItemText(listView1);
            if (str == "") return;

            listView1.DoDragDrop(str, DragDropEffects.Copy | DragDropEffects.Move);
        }

        private void listView2_MouseMove(object sender, MouseEventArgs e)
        {
            if (! lv2_mdown) return;
            if (e.Button == MouseButtons.Right) return;

            string str = GetItemText(listView2);
            if (str == "") return;

            listView2.DoDragDrop(str, DragDropEffects.Copy | DragDropEffects.Move);
        }

        private void listView1_MouseDown(object sender, MouseEventArgs e)
        {
            lv1_mdown = true;
        }

        private void listView2_MouseDown(object sender, MouseEventArgs e)
        {
            lv2_mdown = true;
        }

        public string GetItemText(ListView LVIEW)
        {
            int nTotalSelected = LVIEW.SelectedIndices.Count;
            if (nTotalSelected <= 0) return "";
            IEnumerator selCol = LVIEW.SelectedItems.GetEnumerator();
            selCol.MoveNext();
            var lvi = (ListViewItem) selCol.Current;
            string mDir = "";
            for (int i = 0; i < lvi.SubItems.Count; i++)
                mDir += lvi.SubItems[i].Text + ",";

            mDir = mDir.Substring(0, mDir.Length - 1);
            return mDir;
        }



--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
Kano
Дата 7.3.2010, 19:42 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



[CENSORED]


M
Partizan
Держите себя в рамках!


Мне вообще непонятен механизм. У меня 2 ListView с View = details (т.е. таблицы, две колонки). Я выделяю две строки с помощью Shift + левая кнопка мыши. И двигаю мышь. Что же происходит? Где можно убедиться, что я тащу две строки таблицы?

Добавлено @ 19:55
Мне абслютно непонятен порядок действий.
PM MAIL   Вверх
CYBERDREAM
Дата 7.3.2010, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

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



Следи за эмоциями

Как вариант
Подписываешься на mouseDown, MouseUp. При MouseDown запоминаешь коллекцию выделенных итемов ListView. (При MouseUp зануляешь).
Другой ListView подписываешь на MouseMove и DragEnter. И обрабатываешь
Код

 private void listView2_DragEnter(object sender, DragEventArgs e)
        {
             if (e.Data.GetDataPresent(typeof(ListView.SelectedListViewItemCollection)))
                e.Effect = DragDropEffects.Copy;
            else
                e.Effect = DragDropEffects.None;
        }
 private void listView2_MouseMove(object sender, MouseEventArgs e)
        {
            if (! lv2_mdown) return;
            if (e.Button == MouseButtons.Right) return;

             ....

            listView2.DoDragDrop(itemCollection, DragDropEffects.Copy | DragDropEffects.Move);
        }

а чтобы уже получить кинутые итемы 
Код

private void listView2_DragDrop(object sender, DragEventArgs e)
        {
            var data = e.Data.GetData(typeof(ListView.SelectedListViewItemCollection));
        }


Это сообщение отредактировал(а) CYBERDREAM - 8.3.2010, 23:26


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

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


 




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


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

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