У меня есть одна форма, пользовательский чертеж, никаких элементов управления.WinForms, обработка всех ключей = OnKeyPress + OnKeyDown, но как?
Когда мне нужно получить данные от пользователя, я перехожу к событию OnKeyDown, а затем привязываю KeyData к строке ** - чтобы я мог распознать, что пользователь нажал «ctrl X» и т. Д., Поэтому все почти ок ... проблема с различными настройками клавиатуры и языка конкретных букв - так на сегодняшний день мои пользователи получают
ã -> а
ó -> о
так что мне нужно событие KeyPress правильно? Но откуда я знаю, что пользователь напечатал, например, «ł», а не alt + L? Я не могу придумать это какое-то время ...
** - Мне нужно сделать это так, потому что я позволяю пользователям настраивать ярлыки и использовать .ToString() создает не такой удобный текст, как «OemPeriod, Control» или даже лучше: «ControlKey, Control»
Хм, поправьте меня, если я ошибаюсь, но KeyDown это до события KeyPress, так что ... В KeyDown мне нужно знать, если нажатые клавиши будут обрабатываться KeyPress ... поэтому я буду использовать ToUnicodeEx, правильно? Но если я использую ToUnicodeEx, то мне не понадобится событие KeyPress, правильно? – argh
Нет, вам не нужно знать. KeyPress сообщит вам об этом. Не используйте ToUnicodeEx(). –
Хмм я, возможно, делаю это «неправильно», но я все обрабатываю в KeyDown, и все, кажется, работает нормально :) Но можете ли вы «показать» мне в нескольких строках псевдокода, как выглядит ваше решение? – argh