Текстовое поле не может сканировать много номеров, просто может сканировать только один номер штрих-кода - PullRequest
0 голосов
/ 29 января 2019

Когда я сканирую штрих-код, он просто показывает мне один штрих-код только в базе данных.Мои другие длинные штрих-коды не отображаются

private void textBox4_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {

                if ((e.KeyCode != Keys.Enter) || (textBox4.Text.Length == 0))
                {
                    return;
                }

                conn = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=F:\Database\book1.mdf;Integrated Security=True;Connect Timeout=30");
                conn.Open();
                SqlDataAdapter adp = new SqlDataAdapter("SELECT productid,ProductName,Description,Stock,UOM,Price from ProductTable where productId='" + textBox4.Text + "'", conn);
                DataTable dt = new DataTable();
                adp.Fill(dt);

                foreach (DataRow item in dt.Rows)
                {
                    int i = dataGridView1.Rows.Add();
                    DataGridViewRow row = dataGridView1.Rows[i];
                    row.Cells[0].Value = item[0].ToString();
                    row.Cells[1].Value = item[1].ToString();
                    row.Cells[2].Value = item[2].ToString();
                    row.Cells[3].Value = item[3].ToString();
                    row.Cells[4].Value = item[4].ToString();
                    row.Cells[5].Value = item[5].ToString();
                }
                conn.Close();    
            }
            textBox4.Text=" ";
        }

Страница Скриншоты:

- https://ibb.co/xHsg198

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Как сказал @Alexander, удалите:

textBox4.Text = " ";

Вы также можете изменить событие, которое вы перехватили, на textBox4_Validated, которое будет происходить только после выхода из textBox (Вы можете оставить KeyDown и только перехватить Enterключ к принудительной проверке textBox).

Если ваша цель - только цифровые цифры, вы можете добавить тест, чтобы проверить, действительно ли это только цифры.

Еще один совет, если вы можете запрограммироватьВаш сканер, в конце отсканированной строки вы должны добавить определенный символ (например, \ n или что-то, что вы знаете, никогда не будет в реальном коде).Таким образом, вы можете отсканировать все свои коды подряд, затем разбить последнюю строку и выполнить код в foreach.

Последний пункт, который не очень важен здесь, когда вы ловите нажатие клавиши, как здесь просточтобы выполнить некоторый код, и вы не хотите, чтобы этот keyPress был эффективно добавлен в ваш textBox или еще, добавьте это:

e.SuppressKeyPress = true;
e.Handled = true;

Я не совсем уверен, что именно это делает, но если я хорошо понял,первая строка будет указывать, что keyPress становится таким, как если бы это никогда не происходило, а вторая сообщает системе, что keyPress была правильно использована и обработана, поэтому ей больше не нужно вмешиваться.

Надеюсь, этопомог

0 голосов
/ 29 января 2019

Удалить строку

textBox4.Text=" ";

, поскольку она стирает ваши цифры штрих-кода.А когда сканирование штрих-кода завершено и отправлено Keys.Enter, текстовое поле содержит только одну цифру.

Если вам необходимо очистить текстовое поле после поиска, поставьте эту строку в конце условного оператора

private void textBox4_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        //...
        conn.Close();
        textBox4.Text=" ";
    }
}
...