как да използвате събитие textChanged, когато от четец на баркод

Използвам четец на баркодове, за да получа баркод от продукти. получавам кода в текстово поле. и поставих събитие textchanged в това текстово поле. но проблемът е, че когато баркодът му постави стойност (например ако баркодът е 5 цифрен), тогава събитието textchanged се задейства пет пъти. как да се отърва от това нещо???


person pasha pash    schedule 03.10.2014    source източник
comment
Задайте пощенската марка на четеца на баркод на Cr. Обработете събитието KeyPress. Тогава, ако e.KeyChar = ChrW(13) задайте e.Handled = True.   -  person Bjørn-Roger Kringsjå    schedule 03.10.2014


Отговори (1)


Трябва да можете да програмирате вашия четец на баркодове да извежда префикс и суфикс (един изход преди сканираната стойност и един след). Да кажем, че сте го настроили да извежда звездичка (*) преди стойността на сканираните данни и да извежда връщане на каретката (CR) след това. Прикрепете манипулатор към TextBox.PreviewTextInput Събитие и внимавайте за знака звездичка:

private void PreviewTextInput(object sender, TextCompositionEventArgs e)
{
    if (e.Text == "*") 
    {
        e.Handled = true;
        // Data input has started
    }
}

Можете да използвате това, за да изскочите съобщение, което гласи „Сканиране...“ или нещо друго, което ви е необходимо. След това прикачете манипулатор към TextBox.KeyUp Събитие и чуйте клавиша Enter:

private void KeyUp(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Return)
    {
        string scannedValue = ScanTextBox.Text.Replace("*", string.Empty);
        // Do something with scannedValue 
    }
}

Сега променливата scannedValue трябва да съдържа стойността на сканирания баркод.

person Sheridan    schedule 03.10.2014