Задать вопрос
@iRumba

Как передать событие элементу с фокусом?

Здравствуйте. Есть TextBox. У него есть обработчик события на вращение колесика мыши. Но если мышка находится не над текстбоксом, то событие не срабатывает, хотя элемент под фокусом. Как заставить его перехватывать событие mousewheel когда он под фокусом, даже если указатель мыши находится в другом месте?
  • Вопрос задан
  • 233 просмотра
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия C#-разработчик
    12 месяцев
    Далее
  • Merion Academy
    C# разработчик с нуля
    4 месяца
    Далее
  • Stepik
    PRO C#. Профессия "Backend разработчик"
    4 месяца
    Далее
Решения вопроса 2
@bmforce
Самый простой вариант создать событие PreviewMouseWheel у окна (Preview для того, чтобы событие вызывалось над всеми дочерними элементами)и внутри проверять есть ли фокус у TextBox.

private void TextBox_MouseWheel(object sender, MouseWheelEventArgs e)
        {
            MyFunc();
        }

        private void Window_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
        {
            if (tb.IsFocused)
            {
                MyFunc();
            }
        }


У текстбокса событие можно вообще убрать, если нет необходимости вызывать событие, когда мышка над ним, но нет фокуса.
Ответ написан
Комментировать
Neuroware
@Neuroware
Программист в свободное от работы время
Перехватывать глобально, гуглить по "keyboard\mouse hook C#", например тут
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы