none
Digitar somente números !!! RRS feed

  • Pergunta

  • Tenho um textBox que somente pode aceitar números mas inseri um codigo para o mesmo ele somente aceita numeros mas não consigo digitar a virgula no mesmo alguem teria uma dica ou um codigo para isso ....

    Obrigado
    quarta-feira, 7 de março de 2007 17:14

Respostas

  • Junior,

    A Enumeração Keys, lhe mostra de forma clara (em inglês) quais as teclas (digite keys e pressione F1 em cima dela), e a vírgula é a que eu te passei: Keys.Oemcomma. Quanto a segunda pergunta, melhor você abrir uma nova thread, ok?

    quarta-feira, 7 de março de 2007 18:15
  • Olá Júnior,

    tenho aqui um método que achei na web, talvez te sirva. Ajuste a propriedade TextAlign do TextBos

    para Right e MaxLength para 8 ou 9, dependendo de suas necessidades.

    public static string Formatar(string valor, string mascara)

    {

    StringBuilder dado = new StringBuilder();

    // remove caracteres nao numericos

    foreach (char c in valor)

    {

    if (Char.IsNumber(c))

    dado.Append(c);

    }

    int indMascara = mascara.Length;

    int indCampo = dado.Length;

    for (; indCampo > 0 && indMascara > 0; )

    {

    if (mascara[--indMascara] == '#')

    indCampo--;

    }

    StringBuilder saida = new StringBuilder();

    for (; indMascara < mascara.Length; indMascara++)

    {

    saida.Append((mascara[indMascara] == '#') ? dado[indCampo++] : mascara[indMascara]);

    }

    return saida.ToString();

    }

    No evento TextChanged coloque o seguinte:

    this.textBox1.Text = Formatar(this.textBox1.Text, "######,##");

    this.textBox1.SelectionStart = this.textBox1.Text.Length;

    Não é lá grande coisa, mas quebra um galho.

     

     

    quarta-feira, 7 de março de 2007 18:15

Todas as Respostas

  • Não sei como está o seu código, mas de qualquer forma você deve checar se a tecla pressionada é a vírgula dessa forma: If e.KeyCode = Keys.Oemcomma ...
    quarta-feira, 7 de março de 2007 17:32
  • Valeu pela ajuda eu não achava o KEY referente a virgula por acaso vc não tem ou sabe onde encontro uma referencia para saber qua´l key se refere a virgula , ponto as teclas em geral pois alguma há como saber mas outras fica dificil ...

    Só mais uma pergunta estou usando C# e estou com uma duvida qto ao metodo DISPOSE de alguns objetos eu usava o dispose para DataReaders Commnads sempre que terminava o uso deles mas vi algo na internet que dizia que não se deve usar o dispose agora o dispose qdo usado não "ajuda" o GC a recolher o "lixo" que não esta sendo usado .... vc saberia me dizer se compensa usar o dispose apos usar o objeto isso melhora o desempenho da aplicação ou não

     

    Valeuuu e obrigado

    quarta-feira, 7 de março de 2007 18:05
  • Junior,

    A Enumeração Keys, lhe mostra de forma clara (em inglês) quais as teclas (digite keys e pressione F1 em cima dela), e a vírgula é a que eu te passei: Keys.Oemcomma. Quanto a segunda pergunta, melhor você abrir uma nova thread, ok?

    quarta-feira, 7 de março de 2007 18:15
  • Olá Júnior,

    tenho aqui um método que achei na web, talvez te sirva. Ajuste a propriedade TextAlign do TextBos

    para Right e MaxLength para 8 ou 9, dependendo de suas necessidades.

    public static string Formatar(string valor, string mascara)

    {

    StringBuilder dado = new StringBuilder();

    // remove caracteres nao numericos

    foreach (char c in valor)

    {

    if (Char.IsNumber(c))

    dado.Append(c);

    }

    int indMascara = mascara.Length;

    int indCampo = dado.Length;

    for (; indCampo > 0 && indMascara > 0; )

    {

    if (mascara[--indMascara] == '#')

    indCampo--;

    }

    StringBuilder saida = new StringBuilder();

    for (; indMascara < mascara.Length; indMascara++)

    {

    saida.Append((mascara[indMascara] == '#') ? dado[indCampo++] : mascara[indMascara]);

    }

    return saida.ToString();

    }

    No evento TextChanged coloque o seguinte:

    this.textBox1.Text = Formatar(this.textBox1.Text, "######,##");

    this.textBox1.SelectionStart = this.textBox1.Text.Length;

    Não é lá grande coisa, mas quebra um galho.

     

     

    quarta-feira, 7 de março de 2007 18:15