/([\u00c0-\u01ffa-zA-Z'\-]+[ ]?[*]?[\u00c0-\u01ffa-zA-Z'\-]*)+/;
Попробуйте это. Вы также можете принудительно начать с char, используя ^, и завершить с char, используя $
.Я не уверен, что вы сможете это сделать. Нажатия клавиш попадают в очередь событий для основного цикла событий. Любое действие, которое вы предпримете для отмены этих нажатий клавиш, будет помещено в очередь после нажатия клавиш.
Цикл событий перейдет к вашему действию отмены только после того, как будут обработаны нажатия клавиш.
Установите для KeyPreview
в форме значение true
, затем перехватите событие KeyPress
и установите e.Handled
до истина
, если была нажата кнопка «Отмена».
РЕДАКТИРОВАТЬ : перехватить событие KeyPress формы
You could do BIOS level flushing (http://support.microsoft.com/?scid=kb%3Ben-us%3B43993&x=22&y=10) but I would advise against this low level approach since Windows also does keyboard buffering on a higher level.
The best way seems to be to eat any arriving char while a specific flag is set. As SLaks suggests I would set KeyPreview
to true and set e.Handled
to true either in KeyPress
or in KeyDown
.. should make no difference.