Подтвердить что ты не робот

Обнаружить файл Drag'n'Drop в WPF?

Возможно ли, чтобы окно/элемент WPF обнаружил drag'n'dropping файла из Windows Explorer в С#.Net 3.5? Я нашел решения для WinForms, но не для WPF.

4b9b3361

Ответ 1

К сожалению, зрители TextBox, RichTextBox и FlowDocument всегда отмечают события перетаскивания, которые обрабатываются, что предотвращает их переполнение до ваших обработчиков. Вы можете восстанавливать перетаскиваемые события, которые перехватываются этими элементами управления, путем принудительной обработки событий перетаскивания (используйте UIElement.AddHandler и установите для handledEventsToo значение true) и установите e.Handled на false в вашем обработчике.

Ответ 2

Попробуйте следующее:

    private void MessageTextBox_Drop(object sender, DragEventArgs e)
    {
        if (e.Data is DataObject && ((DataObject)e.Data).ContainsFileDropList())
        {
            foreach (string filePath in ((DataObject)e.Data).GetFileDropList())
            {
                // Processing here     
            }
        }
    }


    private void MessageTextBox_PreviewDragEnter(object sender, DragEventArgs e)
    {
        var dropPossible = e.Data != null && ((DataObject)e.Data).ContainsFileDropList();
        if (dropPossible)
        {
            e.Effects = DragDropEffects.Copy;
        }
    }

    private void MessageTextBox_PreviewDragOver(object sender, DragEventArgs e)
    {
        e.Handled = true;
    }

Ответ 3

Похоже, что я не мог наброситься на свой TextBox по какой-то причине, но сбрасывание на кнопки отлично работает. Получил его, добавив "AllowDrop =" True "в мое окно и добавив обработчик события drop к кнопке, состоящей из:

private void btnFindType_Drop(object sender, DragEventArgs e)
{
  if (e.Data is System.Windows.DataObject &&
    ((System.Windows.DataObject)e.Data).ContainsFileDropList())
  {
    foreach (string filePath in ((System.Windows.DataObject)e.Data).GetFileDropList())
    {
      // Processing here
    }
  }            
}

Ответ 4

Я заметил, что drag & падение в WPF не так просто, как могло бы быть. Поэтому я написал короткую статью по этой теме: http://www.wpftutorial.net/DragAndDrop.html

Ответ 5

У меня была аналогичная проблема, события события перетаскивания и перетаскивания не были запущены. Проблема заключалась в настройках учетных записей пользователей Windows. Установите его как минимум безопасную настройку и попробуйте тот же код, который он работает.