Focus

  • Автор темы smertnik
  • Дата начала
S

smertnik

Гость
#1
Здравствуйте.

Подскажите, как установить фокус на контрол при нажатие на нем правой кнопки мыши. Можно сделать просто, для каждого контрола создать отдельный обработчик события , но требуется всего 1 обработчик.
 
N

NikSoft

Гость
#2
Для: smertnik
Если речь идет о Windows Forms ,как насчет такой схемы?
При загрузке формы обходим коллекцию контролов.
На событие Control.MouseDown вешаем один и тот же обработчик
(http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.mousedown.aspx),
так как любой контрол наследует от типа Control.
В обработчике проверяем условие возможности установления фокуса
(http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.canfocus.aspx).
Если это возможно, устанавливаем фокус
(http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.focus.aspx).
 
M

mms

Гость
#3
Можно написать один обработчик (статический например), которому будут делегироваться ивенты контролов.
 
S

smertnik

Гость
#4
Все оказывается проще, не может такого быть, чтобы не возвращался обьект вызвавший событие, вот только поначалу я почему то думал, что это будет форма, пока не проверил.

Код:
private void _MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
Control sd = (Control)sender;
sd.Focus();
}
}
:)
 
S

smertnik

Гость
#5
Для: smertnik
В обработчике проверяем условие возможности установления фокуса
Вот в этом и была вся загвоздка, вернуть обьект вызвавший событие, не используя несколько обработчиков.

Всем спасибо, наберу 15 сообщений обязательно плюсик нажму :)