2016-06-21 6 views
0

Я работаю со сканером, который посылает мне штрих-код вроде этого: «¬00111111111112222222» как нажатые клавиши, такие как USB-клавиатура. Мне нужно установить Focus на TextBox всякий раз, когда я получаю префикс «¬».способ сравнения специальных символов

Проблема прямо сейчас заключается в том, что внутри моего события KeyDown KeyEventArgs является «Системой», а не символом моего префикса. Есть ли способ сравнить этот знак, чтобы установить Focus?

Кодекс Я попытался это:

private void KeyDownEvent(object sender, KeyEventArgs e) 
{ 
    if (Convert.ToString(e.Key) == "¬") 
    { 
     myTextBox.Focus(); 
    } 
} 

Update: Я сейчас попробовал e.SystemKey и в этот момент, я получаю LeftAlt в качестве аргумента события. Так, возможно, AISCII-код преобразуется в этот SystemKey LeftAlt?

Обновление: Я записал все ключи, которые получаю при сканировании штрих-кода, и я заметил, что сам код ASCII не получаю, как я думал. Я получаю комбинацию клавиш, чтобы сделать этот символ «Alt + NumPad0 + NumPad7 + NumPad2», поэтому теперь мне нужно только сопоставить их с ASCII-кодом с символом «¬», а затем он должен работать. Спасибо за всю помощь.

+0

Как насчет 'KeyInterop.VirtualKeyFromKey (e.Key);'? – Majestic

+0

Нет, он остается пустым – Teroman

+0

Вы уверены, что ваш сканер возвращает именно событие KeyDown? Обычно KeyEventArgs e должен содержать информацию о нажатой клавише. Как можно запустить событие KeyDown без какого-либо триггера? Есть ли способ получить всю строку или что-то еще? – ViVi

ответ

0

Попробуйте прочитать последовательный входной буфер (образец последовательной связи) и проанализировать строку для проверки специальных символов. чек здесь: http://www.codeproject.com/Articles/678025/Serial-Comms-in-Csharp-for-Beginners

ИЛИ Вы можете просто принимать значения ASCii и сравните конкретное значение или диапазон. Например, менее 65 или больше, чем 126.

+0

Я не уверен, но я думаю, что ваш первый совет работает только с Comport, не так ли? Однако, я получил только USB. Я попробовал второй, но проблема в том, что KeyEventArgs меняет весь char на LeftAlt. Еще одна вещь, которую я понял, - это то, что если я напишу текст в текстовое поле, я смогу получить правильный символ из TextBox.Text, чтобы он мог временно сохранить реальный нажатый ключ. Возможно, я мог бы прочитать, что находится внутри этого Кэша. – Teroman

+0

Я пробовал 1-й вариант с rs232 rs422 и usb. Работает блестяще везде. Тем не менее, вы можете попробовать все, что, по вашему мнению, многообещающее. –

+0

большой проблемой в этом решении является то, что я работаю с WPF, а не с Windows Forms. Я, к сожалению, не имею свойство KeyChar на моем KeyEventArgs. У меня также не было другого свойства, которое покажет мне ASCII-код KeyEventArgs. – Teroman