2013-08-26 5 views
1

내 목표 : 123.45 또는 0.45 또는 1004.72와 같은 십진수를 허용하도록 텍스트 상자를 원합니다. 사용자가 a 또는 b 또는 c와 같은 문자를 입력하면 프로그램은 사용자에게 숫자 만 입력하라는 메시지를 표시해야합니다.TextBox 입력이 10 진수인지 확인하십시오 - C#

내 문제 : 내 코드는 1003 또는 567 또는 1과 같은 숫자 만 검사합니다. 123.45 또는 0.45와 같은 10 진수는 확인하지 않습니다. 10 진수를 텍스트 상자에서 확인하려면 어떻게합니까? 다음은 내 코드입니다.

namespace Error_Testing 
{ 

    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void textBox1_TextChanged(object sender, EventArgs e) 
     { 
      string tString = textBox1.Text; 
      if (tString.Trim() == "") return; 
      for (int i = 0; i < tString.Length; i++) 
      { 
       if (!char.IsNumber(tString[i])) 
       { 
        MessageBox.Show("Please enter a valid number"); 
        return; 
       } 
      } 
      //If it get's here it's a valid number 
     } 
    } 
} 

나는 초보자이며 사전에 도움을 주셔서 감사합니다. :)

+0

'..'을 처리하지 않았습니다. 캐릭터. 그들이 이것을 텍스트 상자에 입력하면 어떻게됩니까? –

+0

당신은 당신 자신의 수표를 쓰려고합니까? 아니면 내장 된 것을 사용하여 괜찮습니까? 이것은 .NET에서'decimal.TryParse' 또는'double.TryParse'를 사용하면 간단합니다. – cadrell0

+0

@JonLaMarr : 입력란에 123.을 입력하면 화면에 "유효한 번호를 입력하십시오"라는 대화 상자가 나타납니다. 즉, 텍스트 상자에서 10 진수를 확인하지 않습니다. – Smith

답변

14

Decimal.TryParse을 사용하여 입력 한 문자열이 10 진수인지 확인하십시오.

decimal d; 
if(decimal.TryParse(textBox1.Text, out d)) 
{ 
    //valid 
} 
else 
{ 
    //invalid 
    MessageBox.Show("Please enter a valid number"); 
    return; 
} 
+0

정수의 경우 int.TryParse()를 사용하십시오. –

+0

@NewHire : 작동합니다! 도와 줘서 고맙다. 나는 곧 답변으로 표시 할 것입니다. 다시 한번 감사드립니다. – Smith

+0

@Smith, 환영합니다. 임의의 숫자를 파싱 할 때 항상 다른 유형으로 제공되는'TryParse' 패밀리 메소드를 찾아야합니다. 예 : int.TryParse, DateTime.TryParse 등 – user2711965

0

decimal.Tryparse는 "0.12"가 true를 돌려처럼 ","문자 및 예를 들어 문자열이 포함 된 문자열 true를 돌려줍니다.

+0

일부 국가에서는 "." 소수 구분 기호 및 기타 국가는 ","를 소수 구분 기호로 사용합니다. 당신은 당신의 문화를 바꿈으로써 이것을 바꿀 수 있습니다. 자세한 내용은이 답변을 참조하십시오 [stackoverflow 대답] (http://stackoverflow.com/questions/9160059/set-up-dot-instead-of-comma-in-numeric-values) – Erik

0
private void txtrate_TextChanged_1(object sender, EventArgs e) 
     { 
      double parsedValue; 
      decimal d; 
      // That Check the Value Double or Not 
      if (!double.TryParse(txtrate.Text, out parsedValue)) 
      { 
       //Then Check The Value Decimal or double Becouse The Retailler Software Tack A decimal or double value 
       if (decimal.TryParse(txtrate.Text, out d) || double.TryParse(txtrate.Text, out parsedValue)) 
       { 
        purchase(); 
       } 
       else 
       { 
        //otherwise focus on agin TextBox With Value 0 
        txtrate.Focus();     
        txtrate.Text = "0";     
       } 


      } 
      else 
      { 
       // that function will be used for calculation Like 
       purchase(); 
       /* if (txtqty.Text != "" && txtrate.Text != "") 
        { 
         double rate = Convert.ToDouble(txtrate.Text); 
         double Qty = Convert.ToDouble(txtqty.Text); 
         amt = rate * Qty; 
        }*/ 

      }`enter code here` 
     } 
관련 문제