2009-07-23 3 views
0

Мое приложение работает как плагин внутри другого оконного приложения. Таким образом, мое окно часто не имеет фокуса. Теперь, если кто-то наводит курсор на кнопку/меню и нажимает один раз, все, что он делает, задает фокус на моем окне. Затем (ей) ему нужно нажать еще раз, чтобы получить фактическую функциональность кнопки.Как повторить щелчок мышью в .NET

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

Очевидно, что я должен ТОЛЬКО делать это, когда щелчок приводится в SetFocus, иначе он будет дважды запускать функцию кнопки.

Любые предложения?

глубоко и вечно в долгу, Дэвид

ответ

1

Клик моделирование кажется немного грязным, но вы всегда можете смоделировать любую кнопку мышь на любом (X, Y) через SendInput API через P/Invoke:

[DllImport("user32.dll", SetLastError=true)] 
static extern uint SendInput(uint nInputs, INPUT [] pInputs, int cbSize); 

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

+0

Спасибо, я буду экспериментировать с ними. –

1

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

+0

Точка зрения, я не люблю отклоняться от пользовательских интерфейсов, но обычное поведение * * раздражает. –

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