2009-04-17 3 views
5

Как проверить, нажал ли пользователь мышь или пером на элементе управления C#.При разработке планшетного ПК, как определить, щелкнул ли пользователь мышь или ручку?

Для примера. Если пользователь нажимает текстовое поле с кнопкой пера, то я хочу, чтобы панель ввода всплывала, но если он нажимает мышью, то это не должно. Итак, как я могу проверить, использует ли он мышь или ручку?

Edit: Использование Windows Forms не WPF

ответ

6

Я написал статью для MSDN, которая никогда не публиковалась, я думаю, потому что разработка планшетного ПК вышла из строя к тому времени, когда я получил ее. Но он описал, как это сделать. Короче говоря, вам понадобится API GetMessageExtraInfo. Вот определение:

// [DllImport("user32.dll")] 
// private static extern uint GetMessageExtraInfo(); 

uint extra = GetMessageExtraInfo(); 
bool isPen = ((extra & 0xFFFFFF00) == 0xFF515700); 

Напиши мне на мое имя в сети многоточия Эйнштейна Tech, если вы хотите, чтобы я послал вам статью.

+0

Спасибо! Работает как шарм. –

+0

нашел ссылку на статью MSDN, которая объясняет, почему это работает, а также другая информация. http: // msdn .microsoft.com/EN-US/библиотека/ms703320.aspx –

-1

Я не слишком много знаю об этом, но я думаю, что если кто-то с помощью стилуса, то MouseEnter, mouseExit (или любой другой эквивалент) события не будут срабатывать. Если вас уволили, вы знаете, что они используют мышь.

+0

Эти события все еще срабатывают, они действуют как очень быстрое перемещение мыши. –

0

Если вы используете WPF, тогда есть целый ряд событий Stylus. Например. UIElement.StylusDown.

This содержит больше информации о том, как взаимодействуют события стилуса и мыши.

Если вы не используете WPF, почему бы и нет? : p

+0

К сожалению, я использую Windows Form :(Любое предложение для этого? –