Я пытаюсь реализовать некоторые дополнительные функции Drag & Drop в своем приложении WPF. У меня работает Drag & Drop, когда источник и цель находятся внутри моего приложения, но Мне нужно иметь возможность перетаскивать данные из моего приложения в Outlook (приложение для настольных компьютеров) и загружать их в виде файла при удалении .
Я знаком со стандартным методом DragDrop.DoDragDrop () и событиями, связанными с типичными перетаскиваниями.
Текущая разметка:
MouseLeftButtonDown="Data_MouseLeftButtonDown"
Код обработчика текущего события:
/// Getting the data that we want to export (For example only)
private void Data_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
// Write data to a file (For example only)
var fileToExport = File.ReadAllLines("C:\\test.txt");
if (e.OriginalSource is Grid grid && grid.DataContext is CustomDataObject cdo)
{
DragDrop.DoDragDrop(ControlGoesHere, fileToExport, DragDropEffects.Copy);
}
}
Я пробовал большинство, если не все, других решений SO, которые я исследовал, но Я все еще не могу перенести эти данные в Outlook. Кроме того, я отключил «Просто мой код» и включил все исключения CLR и увидел, что это исключение выдается:
System.Runtime.InteropServices.COMException: 'Invalid FORMATETC structure (Exception from HRESULT: 0x80040064 (DV_E_FORMATETC))'
Насколько я понимаю, DoDragDrop создает объект DataObject на основе данных, которые вы передаете, и что вы может создать экземпляр DataObject вручную, прежде чем передать его для большего контроля, и т. д. c, но до сих пор у меня не работает ни одна конфигурация.
Есть несколько вещей, в которых я не уверен
- Должны ли данные, которые «экспортируются», поступать из системы контроля версий? (Мне успешно удалось экспортировать строку «Test» в Outlook, которая была не из элемента управления.
- Чтобы
DoDragDrop
возвратил что-то, я должен нажать Ctrl или другие клавиши, это из-за настройки моей текущей реализации неправильно обрабатывается логарифм отбрасывания c (например, с помощью QueryContinueDrag
?
WPF,. NET Framework 4.6.1
Я могу предоставить дополнительную информацию по запросу, просто дайте мне знать. Заранее спасибо!