Focus

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

  1. smertnik

    smertnik Гость

    Репутация:
    0
    Здравствуйте.

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

    NikSoft Гость

    Репутация:
    0
    Для: 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 Гость

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

    smertnik Гость

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

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

    smertnik Гость

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

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

    NikSoft Гость

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

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