Forum Pplware

Versão Completa: Ajuda C# Textbox
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
Boa noite a todos eu estou aqui num dilema com um código que ja dei a volta a cabeça e nao saiu do sitio :x eu estou a criar um software para pda em c# , é o seguinte eu tenho o meu form das vendas e o utilizador pode inserir os produtos que quer comprar manualmente seleccionando o produto ou entao pode passar o codigo de barras , seleccionar os produtos ja funciona o codigo de barras é que esta a dar mais trabalho :x basicamente o que o codigo de barras faz é escrever onde estiver o ponteiro o numero que lé o leitor de barras ou seja a minha ideia foi meter uma textbox, onde sempre que fazia alguma coisa no fim fazia textbox1.focus() ou seja a textbox esta sempre pronta para passar o artigo no leitor , é o seguinte eu fiz um codigo no evento da textbox so que não funciona bem quando passo o artigo por vezes insere em branco outras vezes insere-me por exemplo 3 vezes o mesmo artigo so passando uma vez o leitor . Se alguem me poder ajudar agradeço espero ter sido claro mas alguma duvida é so dizer

Código:
private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (textBox1.Text == "")
            {

            }
            else
            {
                //verificar se ja existe
                liga.Open();
                //pesquisa na BD
                SqlCeCommand cmd700 = liga.CreateCommand();
                SqlCeCommand conta100 = liga.CreateCommand();
                conta100.CommandText = " SELECT COUNT([codbarras]) AS TOTAL FROM [vendas] Where [codbarras] = '" + textBox1.Text + "' ";
                int quant1 = Convert.ToInt32(Convert.ToString(conta100.ExecuteScalar()));


                //select para guardar em variaveis o nome do produto e o preco para depois inserir

                SqlCeCommand cmd312 = new SqlCeCommand(" SELECT [nome],[preco] FROM [produtos] WHERE [codbarras] = '" + textBox1.Text + "' ", liga);
                SqlCeDataReader dr312 = cmd312.ExecuteReader();
                //percorre o sqldatareader para obter os dados
                while (dr312.Read())
                {
                    nome = Convert.ToString(dr312["nome"]);
                    preco = Convert.ToString(dr312["preco"]);

                }




                if (quant1 > 0)
                {
                    MessageBox.Show(" Produto ja inserido ");
                }
                else
                {


                    //Insert
                    SqlCeCommand cmdd = new SqlCeCommand(" INSERT into vendas (codbarras,quantidade,nome,preco) VALUES ('" + textBox1.Text + "' , '" + 1 + "', '" + nome + "','" + preco + "' )", liga);
                    cmdd.ExecuteNonQuery();
                    liga.Close();
viva, não estou bem dentro de programação para pda, mas acho que o teu erro está no evento, visto que o textchanged é activado sempre que há alteração no texto da textbox (é activado a cada caracter). Penso que deverias usar ou um lostfocus (ao fazer enter a textbox perde o focus, mas não te esqueças de verificar que o leitor esta a imprimir os caratcteres não imprimiveis[CR]) outro outro evento que active apenas no final de estar o código todo escrito.
URL's de Referência