Как я могу позволить Перетаскивание от Windows Explorer в приложение C# WPF?

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

Вот пример того, что я делаю. Все еще не показывает курсор перемещения и не поразит функцию 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;
        }
    }
}
17
задан Seabass__ 21 May 2010 в 16:05
поделиться

2 ответа

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

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

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

13
ответ дан 30 November 2019 в 11:03
поделиться

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

32
ответ дан 30 November 2019 в 11:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: