Вопрос

Я пытаюсь вручную заправить событие MouseleftButtondown на программном управлении WPF программно, так как я использую Microsoft Surface SDK, которая не стремится к событиям Mouseleftbutondonwown, а события Contactsy. В основном я пытаюсь подтолкнуть событие Mouseleftbuttondonwn на контроль, стрелять правильное поведение на контроле, обращаясь за событием контакта.

Я предполагаю, что я должен каким-то образом использовать метод Raiseevent на контроле, чтобы сделать это с помощью MouseButtoneVentargs, но у меня возникли проблемы с выяснением параметров.

Заранее спасибо за вашу помощь!

Это было полезно?

Решение

Вы можете поднимать мышь и ключевые события, используя Win32 Interop. Исследуйте функцию SendInput на MSDN/pinvoke.net.net..

Обратите внимание, что это приведет к тому, что система и другие приложения думают, что мышь на самом деле нажала. Если вы просто хотите инициировать событие WPF, попробуйте RaiseEvent( new RoutedEventArgs( UIElement.MouseLeftButtonDownEvent ) ).

Другие советы

Желание вызвать определенное событие в контроле довольно часто является индикатором задачи дизайна в коде. Обработчики событий должны Запусковая поведение, не выполнить его. Отказ Я бы предположил, чтобы вы переместили код, который выполняет действие, вызванное MouseLeftButtonDown Обработчик событий в отдельный метод. Тогда тот же метод можно вызвать из ContactDown обработчик события.

var grid = new Grid();            

int timestamp = new TimeSpan(DateTime.Now.Ticks).Milliseconds;
const MouseButton mouseButton = MouseButton.Left;
var mouseDownEvent =
   new MouseButtonEventArgs(Mouse.PrimaryDevice, timestamp, mouseButton) {
       RoutedEvent = UIElement.MouseLeftButtonDownEvent,
       Source = grid,
   };

Вот как я уволяю событие в моем тестовом коде.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top