Увольнение события Mouseleftbuttondown программно
-
27-09-2019 - |
Вопрос
Я пытаюсь вручную заправить событие 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,
};
Вот как я уволяю событие в моем тестовом коде.