Я пытаюсь выполнить обмен текста между 2 текстовыми полями. Идея состоит в том, что у вас их мало, и когда вы щелкаете правой кнопкой мыши по одному из них, перетащите и перетащите на другой, а текст с первого на второй, а текст второго - на первый. Итак, в основном обмен текстовыми сообщениями (на самом деле позже я хочу поменять имя, размер и т. Д.), Но один шаг в то время).TextBox - перетаскивание с помощью правой мыши
Так что проблема связана с обработчиками RightClick ... По умолчанию при щелчке правой кнопкой мыши появляется ContextMenu, поэтому я отключил его (выполнив ContextMenu="{x:Null}"
). я уже знаю, что добавление обработчики MouseRightButtonDown
не сработает так, я добавляю его PreviewMouseRightButtonDown
и C# код для этого выглядит следующим образом:
private void PreviewMouseRightButtonDownHandler(object sender, MouseButtonEventArgs e)
{
DragDrop.DoDragDrop(e.Source as DependencyObject,
(sender as Textbox).Text,
DragDropEffects.Move);
}
Теперь при нажатии правой кнопки мыши над моей TextBox эта функция выполняется , К сожалению, как только я немного передвигаю мышь, текст вставляется в тот же TextBox:/И я не понимаю, почему ... Если я использую PreviewMouseLeftButtonDown, он не ведет себя одинаково, и я могу перетащить курсор мыши из TextBox.
Я нашел подобный вопрос здесь =>WPF DragDrop.DoDragDrop (for a RIGHT-Click?) и пытается добавить DragDrop.AddQueryContinueDragHandler(this, QueryContinueDragHandler);
немного в моем коде, но это не похоже на работу:/ Кроме того, это было как 5 лет с тех пор, так может быть что-то есть с тех пор изменился.
Кто-нибудь?
Эй, я добавлял «QueryContinueDragHandler» по коду. Так что, очевидно, я что-то испортил. Я пробовал свой путь (добавлен в XAML), и он работает как шарм. Спасибо за помощь :) – 3vilguy
На самом деле, вопрос бонуса: V Как мне получить доступ к 'destination' в' QueryContinueDragHandler'? Потому что теперь я перемещаю текст из одного поля в другое, но я не могу его поменять. Я предполагаю, что идеально подходит для него, как раз перед 'textBox.Text = String.Empty;', но я не знаю, как получить объект, который мы сбросили. Также пытался добавить обработчик Drop, но он не выполняется, если TextBox не пуст ... – 3vilguy
Вы пытались добавить в свой XAML обработчик 'PreviewDragOver' к целевому элементу управления? Что-то вроде 'PreviewDragOver =" PreviewDragOver "' –