检查TextBox输入是否是十进制数 – C#

我的目标:我希望文本框接受十进制数字,如123.45或0.45或1004.72。 如果用户键入类似a或b或c的字母,程序应显示一条消息,提醒用户只输入数字。

我的问题:我的代码只检查1003或567或1之类的数字。它不检查像123.45或0.45这样的十进制数字。 如何让文本框检查十进制数? 以下是我的代码:

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 } } } 

我是新手,并提前感谢您的帮助。 🙂

使用Decimal.TryParse检查输入的字符串是否为十进制。

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

对于包含“,”字符的字符串,decimal.Tryparse返回true,例如“0,12”之类的字符串返回true。

 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` }