Focus

Тема в разделе ".NET", создана пользователем smertnik, 28 июн 2007.

  1. smertnik

    smertnik Гость

    Здравствуйте.

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

    NikSoft Гость

    Для: 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).
     
  3. mms

    mms Гость

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

    smertnik Гость

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

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

    smertnik Гость

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

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

    NikSoft Гость

    Для: smertnik
    Для этого достаточно набрать 10 сообщ
    Так что продолжай постить
     

Поделиться этой страницей