Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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 окне, которое отображать один раз при старте проги.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)