none
Tratamento de erro

    Question

  • Boa tarde!

    To com um problema

    nao estou sabendo tratar o erro em um textbox

    quero que ele receba somente valores do tipo double

    Obrigado.

    Wednesday, December 08, 2010 5:19 PM

Answers

  • somente do tipo double mesmo ou valor numerico?

    segue um exemplo.

     

     

        // no evento KeyPress
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
          string pattern = @"^[+]?\d*$"; // somente numero
          bool eValido = (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), pattern));
    
          if (eValido)
          {
            e.Handled = true; // mostra o numero digitado
          }
        }
    

     

     


    se a resposta foi útil, classifique :)
    ate mais,

    Rodrigo Soria
    • Proposed as answer by RSCS Thursday, December 09, 2010 10:00 PM
    • Marked as answer by Harley AraujoOwner Friday, December 10, 2010 1:03 PM
    Wednesday, December 08, 2010 7:36 PM
  • Thalles,

    Você pode testar também sem usar regex:

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
       // verifica se o é um caractere numérico ou de controle...
       if (char.IsDigit(e.KeyChar) || char.IsControl(e.KeyChar))
        e.Handled = false;
       else
       {
        // verifica se é um separador decimal...
        if (string.Compare(e.KeyChar.ToString(), System.Threading.Thread.CurrentThread.CurrentUICulture.NumberFormat.NumberDecimalSeparator) != 0)
         e.Handled = true;
        else
        {
         // se for um separador decimal, verifica se já tem...
         if (((TextBox)sender).Text.Contains(System.Threading.Thread.CurrentThread.CurrentUICulture.NumberFormat.NumberDecimalSeparator))
          e.Handled = true;
         else e.Handled = false;
        }
       }
    }
    
    

    at.,


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    Thursday, December 09, 2010 4:26 PM

All replies

  • somente do tipo double mesmo ou valor numerico?

    segue um exemplo.

     

     

        // no evento KeyPress
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
          string pattern = @"^[+]?\d*$"; // somente numero
          bool eValido = (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), pattern));
    
          if (eValido)
          {
            e.Handled = true; // mostra o numero digitado
          }
        }
    

     

     


    se a resposta foi útil, classifique :)
    ate mais,

    Rodrigo Soria
    • Proposed as answer by RSCS Thursday, December 09, 2010 10:00 PM
    • Marked as answer by Harley AraujoOwner Friday, December 10, 2010 1:03 PM
    Wednesday, December 08, 2010 7:36 PM
  • Thalles,

    Você pode testar também sem usar regex:

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
       // verifica se o é um caractere numérico ou de controle...
       if (char.IsDigit(e.KeyChar) || char.IsControl(e.KeyChar))
        e.Handled = false;
       else
       {
        // verifica se é um separador decimal...
        if (string.Compare(e.KeyChar.ToString(), System.Threading.Thread.CurrentThread.CurrentUICulture.NumberFormat.NumberDecimalSeparator) != 0)
         e.Handled = true;
        else
        {
         // se for um separador decimal, verifica se já tem...
         if (((TextBox)sender).Text.Contains(System.Threading.Thread.CurrentThread.CurrentUICulture.NumberFormat.NumberDecimalSeparator))
          e.Handled = true;
         else e.Handled = false;
        }
       }
    }
    
    

    at.,


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    Thursday, December 09, 2010 4:26 PM