Как установить обработчик событий (например, keydown
) на все решение, а не на одно окно?Как установить evenHandler в WPF для всех окон (всего приложения)?
ответ
Регистрация глобальный обработчик событий в прикладном классе (App.cs), как это:
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
EventManager.RegisterClassHandler(typeof(Window), Window.KeyDownEvent, new RoutedEventHandler(Window_KeyDown));
}
void Window_KeyDown(object sender, RoutedEventArgs e)
{
// your code here
}
}
Это будет обрабатывать KeyDown
событие для любого Window
в вашем приложении. Вы можете наложить e
на KeyEventArgs
, чтобы получить информацию о нажатой клавише.
Вы должны использовать делегат, чтобы связать событие (где бы оно ни было) и функцию, которую вы готовы работать при переходе события.
вы можете загрузить столько событий, сколько хотите своему делегату.
mzE.
вы можете дать код? – Programer
Ну, KeyDown
будет работать только в текущем окне, потому что вам нужен фокус для KeyDown
. Что вы можете сделать, это добавить обработчик ко всем окнам и отправить другое событие в этих обработчиках, а затем зарегистрировать все классы, которые вам нужны с этим новым событием.
альтернативно, посмотрите на Observer
узор
Я когда-то сделал это ... Я не помню, как я скопировал его, где-то я не могу найти сейчас – Programer
Вы не можете.
Eighter вы регистрируете событие во всех окнах и передаете его на глобальную функцию/событие или (в случае смены ключа или аналогичного) вы используете некоторую глобальную «захват событий» (например, THIS для клавиатуры).
Я когда-то это делал ... Я не помню, как я его скопировал, где-то я не могу найти – Programer
Как об этом:
public partial class App : Application {
protected override void OnStartup(StartupEventArgs e) {
EventManager.RegisterClassHandler(typeof(Window), Window.KeyDownEvent, new RoutedEventHandler(KeyDown));
base.OnStartup(e);
}
void KeyDown(object sender, RoutedEventArgs e) {
}
}
- 1. Как установить фоновое изображение всех окон в приложении WPF
- 2. BackgroundColor для всех окон
- 3. Где разместить код в (прежде всего) без окон WPF-приложения?
- 4. Иконка WPF для всех окон приложений
- 5. как установить шрифт Roboto для всего приложения?
- 6. Пример приложения wpf без окон?
- 7. Изменение размера всех окон приложения
- 8. Как установить значок по умолчанию для всех окон Java Swing?
- 9. Можно ли установить TextRenderingHint для всего приложения?
- 10. Пользовательский курсор для всего приложения WPF
- 11. Как установить цвета первичного/акцента для виджетов для всего приложения?
- 12. Как установить направление всего приложения в RTL?
- 13. Как установить значение JQGrid глобально для всего приложения?
- 14. android: как установить пользовательский шрифт для всего приложения
- 15. Установить фоновое изображение для всего приложения IOS
- 16. Окна оконных окон для всех окон
- 17. Вращение окон в WPF
- 18. Как установить пользовательский контроль окон в приложении WPF?
- 19. Установить шрифт универсально для всего приложения
- 20. Android: установить шрифт всего приложения
- 21. WPF Grid для компоновки окон
- 22. calendar setFirstDayOfWeek для всего приложения
- 23. Установить значения по умолчанию для SharedPreferences для всего приложения
- 24. Как установить глобальную сессию для всего приложения в Laravel?
- 25. Как установить единый часовой пояс для всего приложения в winforms
- 26. Как установить стиль шрифта для всего приложения в ExtJS 4?
- 27. Как установить пользовательский шрифт для всего приложения в Android
- 28. Установить цвет UILabel по умолчанию для всего приложения в Monotouch
- 29. Как установить метеорит для окон?
- 30. Глобальный ресурс контекстного меню для всех окон
спасибо, что это направление, я видел это однажды, у него было что-то с обработчиком регистров и т. д. плохо попробуйте это и сообщите – Programer
, а вместо кастинга вы можете просто заменить 'new RoutedEventHandler (..)' на 'new KeyEventHandler (Window_KeyDown)' – BatteryBackupUnit