@iRumba

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

Здравствуйте. Есть TextBox. У него есть обработчик события на вращение колесика мыши. Но если мышка находится не над текстбоксом, то событие не срабатывает, хотя элемент под фокусом. Как заставить его перехватывать событие mousewheel когда он под фокусом, даже если указатель мыши находится в другом месте?
  • Вопрос задан
  • 230 просмотров
Решения вопроса 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#", например тут
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы