Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > DragDrop


Автор: Moid 3.4.2008, 18:30
Народ помогите пожалуйста, 
сделал перетаскивание картинки из моего приложения во внешние (Point, Explorer, ...),
теперь нужно обратное. Схватить графический файл к примеру из папки и перетащить в мое приложение с именем и изображением ест-но.
Перетаскивание из своего приложения делал так:
Код

private void CaseTreeView_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left) 
            {
                StringCollection ss = new StringCollection();
                ss.Add(tmpDirImage);
                DataObject dobj = new DataObject();
                dobj.SetFileDropList(ss);
                DragDropEffects dde = this.DoDragDrop(dobj, DragDropEffects.Copy);
                if ((dde & DragDropEffects.Copy) == DragDropEffects.Copy)
                {
                    //---
                }            
            }
        }

Автор: mr.DUDA 3.4.2008, 20:09
Нужно поставить у контрола AcceptsDrop=true и обрабатывать DragOver (ставить e.Effect=DragDropEffects.Copy) и DragDrop (принимать что там пришло в IDataObject).

Автор: vponomarov 3.4.2008, 20:24
Moid, как-то кривовато получилось, но работает
дальше как-нибудь сам smile 
Код

private void Form1_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent("FileName"))
            {

                string[] items = (string[])e.Data.GetData("FileName");
                pictureBox1.Image = Image.FromFile(items[0]);
            }

        }


З.Ы. так можно получить картинку из эксплорера

Автор: vponomarov 4.4.2008, 18:30
все, разобрался smile 
в DragEnter нужно проверить есть ли в перетаскиваемом объекте нужные тебе данные и если есть - поставить e.Effect = DragDropEffects.Copy; (ну или другой эфект по желанию)
а потом уже в DragDrop пишешь код, который я написал в предыдущем посте
все smile 

Автор: Moid 4.4.2008, 21:45
Огромное спасибо.
+1.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)