C #: перетаскивание в WPF (Richtextbox) - PullRequest
3 голосов
/ 11 декабря 2010

Я хочу реализовать механизм перетаскивания в WPF, но это не сработало ... С Windows-Forms это работало, ...

Сначала я установил AllowDrop на True. В windows-формах вы уже можете перетаскивать элементы в richtextbox, и курсор меняется.

С WPF .... ничего не происходит.

Следующая точка: реализовать методы DragEnter и DragDrop. Я сделал это так, как написано в онлайн-руководствах. (Хорошо, я должен был попробовать что-то еще, потому что DragDrop не существует в WPF) Я думаю, что все учебники для перетаскивания предназначены только для Windowsforms, ничего для WPF ...

Есть ли проблема с richtextbox? Если я изменю его на «allowDrop» - ничего не произойдет. Курсор по-прежнему является недопустимым символом.

Надеюсь, кто-то может помочь:)

Пример кода из учебников, которые я прочитал:

richTextBox1.AllowDrop = true;

void richTextBox1_DragEnter(object sender, DragEventArgs e)
{
    e.Effect = DragDropEffects.None;

    if (e.Data.GetDataPresent(DataFormats.XXX))
    {
        e.Effect = DragDropEffects.Copy;
    }
}

void richTextBox1_DragDrop(object sender, DragEventArgs e)
{
    //intert in richtextbox ...
    richTextBox1.methodeXY();
}

1 Ответ

7 голосов
/ 12 декабря 2010

Мне было любопытно, почему, поэтому я немного поиграл и в конце концов заставил его работать.По сути, я начал с привязки к событиям PreviewXXX, например, так:

AllowDrop="True" PreviewDragEnter="RichTextBox_DragEnter" PreviewDragOver="RichTextBox_DragEnter" PreviewDrop="RichTextBox_Drop"

И все же они ЕЩЕ не работали.Но ответ пришел здесь , в виде повышенных разрешений.Я обычно запускаю VS2010 с правами администратора.Поскольку я переносил некоторые файлы из Проводника на свой RichTextBox, он фактически запрещал эту операцию, поскольку Проводник работал в режиме без повышенных прав пользователя.Запуск VS2010 в режиме без повышенных прав решил проблему.Связанная статья действительно предлагает некоторые обходные пути, но я еще не пробовал их.

...