2014-10-16 2 views
0

Я работаю над проектом winforms, где мне нужно отображать текст и изображения, когда обнаружен щелчок мыши, но я сталкиваюсь с несколькими проблемами. Я не могу последовательно обнаруживать щелчки мыши. базовый обзор программы, сначала загружает основную форму, затем пользователь загружает другую форму для настройки параметров. После этого другая форма закрывается, а основная форма получает фокус. Основная форма - это то, что должно получать вход мыши После того, как обнаружен щелчок мыши, вызывается функция, которая использует ThreadPool.QueueUserWorkItem для воспроизведения звуковых и отображаемых изображений.Форма игнорирует некоторые щелчки мыши

Что происходит, так это то, что щелчки мыши иногда игнорируются в основной форме. Обычно первый щелчок игнорируется, d сказать, что более половины будущих щелчков мыши игнорируются. Я добавил код, чтобы уведомить меня когда MouseUp запускается в обработчике событий, поэтому я уверен, что обработчик события не вызван. Я также установил this.Capture = true; в основной форме, поэтому я не совсем уверен, почему некоторые щелчки мыши игнорируются. Есть ли что-то, что может мешать щелчкам мыши?

+1

Я обнаружил, что иногда Mousedown срабатывает и нажмите или MouseClick не .. – TaW

ответ

1

Да

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

Если ваш обработчик событий находится на базовом контейнере управления, и они нажимают, скажем, текстовое поле; то текстовое поле получает событие click, а контейнер - нет.

Если вашим элементам управления «сверху» не требуется ввод пользователя, вы можете просто установить IsHitTestVisible (или эквивалент WinForms) на false. Если вы нуждаетесь в пользовательском вводе do, вам нужно либо захватить клики по-разному, либо добавить событие «MouseUp» для каждого элемента управления.

См Hittest transparency for an entire form и WinForms equivalent of WPF's IsHitTestVisible способы сделать IsHitTestVisible в Winforms. Кроме того, просто используйте WPF.

Смежные вопросы