Перетащите нетекстовый объект в RichTextBox - PullRequest
0 голосов
/ 14 декабря 2011

Я пытаюсь перетащить нетекстовый объект из метки в RichTextBox. Но когда я перемещаю мышь над RTB, он не дает мне упасть.

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            richTextBox1.AllowDrop = true;
            richTextBox1.Drop+=new DragEventHandler(richTextBox1_Drop);
            richTextBox1.DragEnter +=new DragEventHandler(richTextBox1_DragEnter);
            richTextBox1.DragOver+=new DragEventHandler(richTextBox1_DragOver);  

            labelSender.MouseDown+=new MouseButtonEventHandler(labelSender_MouseDown);
        }

        private void richTextBox1_Drop(object sender, DragEventArgs e)
        {
            DropContent dropContent = (DropContent)e.Data.GetData(typeof(DropContent));
            richTextBox1.AppendText(dropContent.Content);
        }

        private void richTextBox1_DragOver(object sender, DragEventArgs e)
        {
            e.Effects = DragDropEffects.Copy;
        }

        private void richTextBox1_DragEnter(object sender, DragEventArgs e)
        {
            e.Effects = DragDropEffects.Copy;
        }

        private void labelSender_MouseDown(object sender, MouseEventArgs e)
        {
            DragDrop.DoDragDrop((Label)sender, new DropContent("HelloRichTextBox"), DragDropEffects.Copy);
        }
    }

    public class DropContent //Object containing dragging data
    {
        public string Content;
        public DropContent(string content)
        {
            this.Content = content;
        }
    }

Похоже, что RTB позволяет отбрасывать только текст.

Ответы [ 2 ]

0 голосов
/ 07 октября 2014

Вам не нужны ваши методы перетаскивания и класс DropContent.Вам просто нужно написать метод MouseDown:

public partial class MainWindow : Window {
    public MainWindow() {
        InitializeComponent();
        richTextBox1.AllowDrop = true;  
        labelSender.MouseDown += new MouseButtonEventHandler(labelSender_MouseDown)
    }

    private void labelSender_MouseDown(object sender, MouseButtonEventArgs e) {
        DragDrop.DoDragDrop((Label)sender, ((Label)sender).Content, DragDropEffects.Copy);
    }
}
0 голосов
/ 21 марта 2013

Часть кода из "Xcalibur37", которая решает эту точную проблему, находится в событии dragOver:

e.Handled = true;

Надеюсь, что это решит проблемы других людей, потому что это решило мои, и это был именно начальный вопрос.

Вы можете просмотреть его полный ответ на этой странице: Перетащите путь в wpf

...