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

Как разрешить перетаскивание из Windows Explorer в приложение WPF С#?

Я знаю, что на эту тему было много ответов, но я до сих пор не могу заставить его работать вообще. Я включил AllowDrop для каждого элемента управления на всех уровнях приложения и попытался поймать DragEnter и Drop на каждом элементе управления безрезультатно. Я могу перетаскивать элементы внутри приложения, но в любое время, когда я пытаюсь что-то принести из проводника Windows или рабочего стола и т.д., Он дает мне значок "Нет". Любые идеи, что я могу делать неправильно?

Вот пример того, что я делаю. Все еще не отображает курсор перемещения и не попадает в функцию MainWindow_DragEnter.

    namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            this.AllowDrop = true;
            this.DragEnter += new DragEventHandler(MainWindow_DragEnter);
        }

        void MainWindow_DragEnter(object sender, DragEventArgs e)
        {
            e.Effects = DragDropEffects.Move;
        }
    }
}
4b9b3361

Ответ 1

AllowDrop только активирует возможность использования перетаскивания. Вы должны справиться с этим сами.

Как вы видели, объекты, имеющие AllowDrop, также имеют события DragEnter, DragOver, DragLeave. Вы должны закодировать то, что хотите, в этот момент. Вы можете изменить курсор, принять выпавшие предметы и т.д. Но вы должны сделать это самостоятельно. Например. найдите DragEventArgs.Effects.

Я только что открыл новое приложение WPF, выбранное окно, включил AllowDrop, добавил обработчик событий DragEnter и добавил туда: e.Effects = DragDropEffects.Move; Прекрасно работает для меня.

Ответ 2

Я решил свою проблему, я верю. Я запускал Visual Studio в качестве администратора. Когда он запустил мое приложение, он не распознал перетаскивания из Explorer, потому что Explorer работал в режиме пользователя. Надеюсь, что это движение костину поможет кому-то еще.