2012-07-03 4 views
0

Здравствуйте, я хотел бы, чтобы я мог перетащить строку из datagridview, чтобы скопировать файл в папку, которую я отбрасываю.Извлечь файлы из datagridview

Строки одного выбора, и у меня есть столбец пути к файлу, который имеет полный путь источника для файла строки.

Есть ли что-то, что я могу сделать с помощью DragLeave, чтобы удержать этот путь к файлу, и когда я отпустите мышь, выполните копию?

Закончен с использованием ключа-модификатора, но он работает. Только для одного файла за раз, потому что я запрограммировал свое контекстное меню.

if (Control.ModifierKeys == Keys.Shift) 
{ 
     //Drag out 
     string[] selectedFiles = new String[1]; 
     selectedFile[0] = filesGrid[pathColumn.Index,filesGrid.SelectedRows[0].Index].Value.ToString(); 
     DataObject dragData = new DataObject(DataFormats.FileDrop, selectedFiles); 
     dragData.SetData(DataFormats.StringFormat, selectedFiles[0]); 
     DoDragDrop(dragData, DragDropEffects.Copy); 
} 

ответ

1

This может быть только тем, что вы ищете. Пожалуйста, дайте мне знать, если это помогло :)

Что касается перетаскивания на рабочем столе или в Explorer, я нашел эту статью here.

+0

похоже, что он отлично справляется с переносом данных из одного элемента управления в другой, datagridview в окно списка, однако я не уверен, что делать после начала перетаскивания. Если бы мне нужно было сделать Ctrl + Left Click, как предложил этот автор, нет никаких свойств DragEnter или DragDrop для рабочего стола, о котором я знаю. – ikathegreat

+0

Я бы не был так уверен;) http://social.msdn.microsoft.com/forums/en-US/winforms/thread/60f3ef88-ff7d-4846-b28f-3c97dcef7583/ – phadaphunk

+0

Я отмечу как ответ , вопрос отредактирован, чтобы показать код. Я могу оставить только один файл за раз, потому что мне нужно отключить мультиселекцию (ограничения контекстного меню), но это лучше, чем ничего в моем случае. Благодарю. – ikathegreat

Смежные вопросы