| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > WPF и Silverlight > Обработка событий UserControl |
| Автор: ДобренькийПапаша 31.5.2011, 09:00 |
| Есть UserControl, представляющий собой экранную клавиатуру. То есть, он содержит кучу кнопок. Этот UserControl я использую в куче окон. И в каждом окне приходится прикручивать заново все обработчики событий ко всем кнопкам. Мне по клику надо вписывать в текстбокс значение нажатой кнопки, но как я это могу сделать не имея обработчика (в случае если обработчики я прикручу в самом UserControl)? Приходится везде прикручивать по новой. partial methods не помогают - нужно делать partial classes - а я не могу тут так. |
| Автор: -Mikle- 1.6.2011, 09:41 |
| 1) Можно в UserControl определить свое событие со своей сигнатурой. Обработчик кнопок находится в UserControl, там делаешь что нужно и дергаешь свое событие. В остальном коде подвешиваешься только на свое событие UserControl. 2) Можешь сделать свой контрол самонастраивамым. Например, вызывать из конструктора окна некий метод в нем, в который передавать ссылку на окно, которое содержит этот контрол. В этом методе можешь сделать что тебе нужно. 3) Есть класс System.Windows.Forms.SendKeys (ну что поделать, если в WPF нету). Он служит для отправки строковой последовательности окну в фокусе. Если твой контрол не берет на себя фокус при клике (или умеет возвращать его предыдущему окну), то работать будет. В этом случае контрол вообще не надо привязывать и нужно(!) его разместить в отдельном не модальном TopMost окне, которое отображать один раз при старте проги. |