Событие Button.MouseMove в WPF всегда имеет e.LeftMouse со статусом «Выпущено».C#

Место общения программистов C#
Ответить
Anonymous
 Событие Button.MouseMove в WPF всегда имеет e.LeftMouse со статусом «Выпущено».

Сообщение Anonymous »


Я пытаюсь начать перетаскивание элемента управления Button в WPF. Я использую кнопку, потому что мне также нужно обрабатывать событие щелчка.

При добавлении кнопки в XAML и обработке события MouseMove всегда e.LeftMouse равен MouseButtonState.Released.

В следующей реализации обработчика исключение никогда не создается.

private void Button_MouseMove(отправитель объекта, MouseEventArgs e) { если (e.LeftButton == MouseButtonState.Pressed) throw new Exception("Это работает!"); } Я заметил, что то же самое справедливо для любого элемента управления, который я помещаю внутрь кнопки и пытаюсь обработать событие MouseMove.

Как обрабатывать перетаскивание из элемента управления Button или любого другого элемента управления внутри кнопки в WPF?

РЕДАКТИРОВАНИЕ – Решение на основе ответа mm8

Обновленный XAML:

Обновленный код обработчика:
Точка startPosition; двойная дельта = 10; частный void Button_PreviewMouseDown (отправитель объекта, MouseButtonEventArgs e) { e.Handled = правда; startPosition = e.GetPosition(this); } Private void Button_PreviewMouseUp (отправитель объекта, MouseButtonEventArgs e) { Точка currentPosition = e.GetPosition(this); if ((currentPosition - startPosition).Длина = delta) выдать новое исключение («DragAndDrop»); }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»