Событие разрыва строки

#c# #data-entry

#c# #ввод данных

Вопрос:

Я работаю над проектом, связанным с вводом данных.

Таблица выглядит следующим образом: dateTime , enum , text enum val1 , val2 text enum ,,,,,,,,,,,,,,,,,.;

Все значения, кроме val1 и val2 , вводятся только один раз и добавляются в таблицу для каждой val1 val2 пары. Val1 и val2 различны для каждой записи в строке, они оба являются штрих-кодами.

Я хочу сделать это как можно более эффективным, поэтому я хотел бы знать, есть ли способ выполнить обновление DGV после ввода значений Val1 / 2 (остальные значения val в настоящее время хранятся как переменные в object[] ). Я использую стандартный сканер штрих-кода, поэтому я подумал, что мог бы заставить его вводить значения для «разрыва строки», которые сканер вводит после сканирования штрих-кода, поэтому я в основном ищу событие «scanner_LineBreak» или что-то в этом роде…

Итак, я преодолел эту проблему … сейчас…. Мне нужно записать все данные в текстовый файл / excel / xml / whatevertheheck из DGV … плохое структурирование, я знаю … может просто начаться заново. В любом случае, я создал пустой dataset и пустую datatable и пустой datarow (используя object[] заполнить строку, которая заполняет таблицу, которая заполняет набор), и теперь я пытаюсь ввести все данные в пустую DataTable, чтобы я мог добавить его в dataset, чтобы я мог записать данные в XML. излишне говорить, что это не работает. Я пытался использовать XmlSerializer, но при импорте его в Access и / или IE возникают ошибки. Итак, возвращаемся к разделу 1… Есть ли способ заполнить DS из DGV или есть способ написать любой документ, используя только данные DGV. примечание: DGV = DataGridView

Обновить

Немного подумав об этом, я понял, что могу увеличить счетчик для каждого символа, введенного с помощью события Textchanged, и оттуда делать то, что я хотел… поди разберись…

 int counter = 0;
private void textbox1_Textchanged(obj sender etc)
{
    counter  ;

    if (counter % 10 == 0)
    {
        //shift focus to other textbox then do same to "save" values
    }
}
  

Ответ №1:

По моему опыту, большинство сканеров штрих-кода обрабатываются как ввод с клавиатуры. За цифрами последует управляющий символ (обычно CRLF или tab, но вам нужно будет проверить с помощью вашего сканера, чтобы увидеть, какой символ он использует). Затем вы можете использовать события KeyDown или TextChanged, чтобы просмотреть входные данные и, если это управляющий символ, выполнить свою логику обновления.

Комментарии:

1. Да, пробовал событие textchanged, но оно останавливает ввод на 1-м символе. В настоящее время я работаю над решением проблемы, вводя все данные в первую очередь, добавляя их в таблицу только после того, как все они были собраны. Этот способ также должен быть более эффективным. Большое спасибо за ответ, хотя я посмотрю на KeyDown

2. Проект завершен… Работает великолепно. Как мне закрыть этот вопрос / поток?

3. Отличная работа! Просто отметьте вопрос, на который дан ответ, щелкнув галочку рядом с ответом.

4. Из часто задаваемых вопросов о том, как закрыть вопрос: «Когда вы решите, какой ответ для вас наиболее полезен, отметьте его как принятый ответ, щелкнув по контуру флажка слева от ответа. Это позволяет другим людям знать, что вы получили хороший ответ на свой вопрос. Это полезно, потому что показывает другим людям, что вы получаете пользу от сообщества. (Если вы этого не сделаете, люди часто вежливо попросят вас вернуться и принять ответы на другие ваши вопросы!)»