Лучший отвечающий
BarcodeScanner

Вопрос
-
Здравствуйте! Есть сканер работает он как эмулятор клавиатуры. Проблема заключается в следующем не знаю как при сканировании автоматически фокусироваться на textboxe???(язык C#)
- Изменено Jecuss 17 октября 2015 г. 7:41 Ошибка
17 октября 2015 г. 7:40
Ответы
-
Установить у формы KeyPreview property в истину и тогда клавиатурный ввод, независимо от положения фокуса будет попадать в процедуру обработки события формы.
public partial class Form1 : Form { public Form1() { InitializeComponent(); this.KeyPreview = true; } private void Form1_KeyPress(object sender, KeyPressEventArgs e) { this.textBox1.Text += e.KeyChar; } }
В тоже время понятно, что сканер, без собственного объекта с набором событий (как раз ваш случай), не обеспечит пользователю ввод штрих-кода "по событию", если на форме есть и другие контролы допускающие текстовый ввод.
- Изменено iBykovsky 17 октября 2015 г. 14:20
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff, Moderator 26 октября 2015 г. 8:56
17 октября 2015 г. 14:06
Все ответы
-
У вас же скорее всего API есть от этого устройства и оно должно вас как то уведомлять о прочтении, скорее всего через событие (event). Вам нужно подписаться на него, ну а потом можно установить фокус на элемент, в случае Windows Forms например так: textBox1.Select().
Сделаем содержимое сообщества лучше, вместе!
17 октября 2015 г. 9:02Модератор -
Вот в том то и дело что нет! работает как эмулятор клавиатуры через порт не законектиться(17 октября 2015 г. 11:25
-
Когда сканер работает в разрыв клавиатуры, то символы получаемые со сканера ничем не отличаются от простого набора на клавиатуре, признаком конца набора штриха является символ перевода коретки, т.е. Enter (Хотя это вроде настраивается с помощью служебных штрих кодов сканера). Вам просто у всех элементов формы, на которые можно установить фокус в обработчик клавиатуры запихнуть собственную функцию, которая бы добавляла полученный символ с клавиатуры в конец строки вашего textbox и если он не в фокусе, ставила бы фокус на него.
- Изменено Liliya Muray 17 октября 2015 г. 13:35
17 октября 2015 г. 13:33 -
Установить у формы KeyPreview property в истину и тогда клавиатурный ввод, независимо от положения фокуса будет попадать в процедуру обработки события формы.
public partial class Form1 : Form { public Form1() { InitializeComponent(); this.KeyPreview = true; } private void Form1_KeyPress(object sender, KeyPressEventArgs e) { this.textBox1.Text += e.KeyChar; } }
В тоже время понятно, что сканер, без собственного объекта с набором событий (как раз ваш случай), не обеспечит пользователю ввод штрих-кода "по событию", если на форме есть и другие контролы допускающие текстовый ввод.
- Изменено iBykovsky 17 октября 2015 г. 14:20
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff, Moderator 26 октября 2015 г. 8:56
17 октября 2015 г. 14:06 -
переделал на wpf c KeyPress все хорошо, но при любом вводе с клавиатуры в textbox вставляется текст18 октября 2015 г. 5:09
-
Установить у формы KeyPreview property в истину и тогда клавиатурный ввод, независимо от положения фокуса будет попадать в процедуру обработки события формы.
public partial class Form1 : Form { public Form1() { InitializeComponent(); this.KeyPreview = true; } private void Form1_KeyPress(object sender, KeyPressEventArgs e) { this.textBox1.Text += e.KeyChar; } }
В тоже время понятно, что сканер, без собственного объекта с набором событий (как раз ваш случай), не обеспечит пользователю ввод штрих-кода "по событию", если на форме есть и другие контролы допускающие текстовый ввод.
не могу логику ни как придумать
private void MainWindow_OnKeyUp(object sender, KeyEventArgs e)
{
if (e.Key==Key.Enter)
{//начать ввод}
else if (e.Key==Key.Return)
{
//запретить
}
}
18 октября 2015 г. 5:26 -
переделал на wpf c KeyPress все хорошо, но при любом вводе с клавиатуры в textbox вставляется текст
Да, так и будет. Как Вам написал iBykovsky, если на форме будут другие элементы ввода, то им ничего от клавиатуры не достанется... Надо либо приучить пользователей к тому, чтобы перед считыванием фокус надо ставить на textbox, либо на форме не должно быть других элементов клавиатурного ввода...18 октября 2015 г. 5:29 -
Конечно, с таким сканером общее решение возможно только с включением в логику некого флага - "идет ввод штрих-кодов". Как реализовать этот флаг - кнопка на форме, открытие суб-окна или что-то другое - уже детали.
Без такого флага, получить что-то удовлетворительное можно только при благоприятном стечении обстоятельств. Если есть возможность, надо использовать для других полей на форме не текстовый ввод, а выбор из списка (выпадающих или открывающихся в новом окне). Еще что-то можно придумать с анализом текста и скоростью его набора - ведь ввод со сканера это очень быстрый поток исключительно(?) цифровых символов.
Но это только общие соображения.
18 октября 2015 г. 9:17