检查 TextBox 输入是不是为十进制数 - C#

Posted

技术标签:

【中文标题】检查 TextBox 输入是不是为十进制数 - C#【英文标题】:Check if TextBox input is a decimal number or not - C#检查 TextBox 输入是否为十进制数 - C# 【发布时间】:2013-08-26 17:13:20 【问题描述】:

我的目标:我希望文本框接受十进制数字,例如 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.TryParsedouble.TryParse 的.NET 中是微不足道的。 @JonLaMarr:如果我在文本框中输入 123.,屏幕上会出现一个对话框:“请输入有效数字”。这意味着文本框不检查十进制数字。 @cadrell0:是的,我可以使用内置的或者更简单的。但是,我不知道该怎么做,因为这是我最初的几次 C# 编码尝试之一。 @Smith NewHire 的回答非常简单。 【参考方案1】:

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

decimal d;
if(decimal.TryParse(textBox1.Text, out d))

    //valid 

else

    //invalid
    MessageBox.Show("Please enter a valid number");
    return;

【讨论】:

对于整数,使用 int.TryParse() @NewHire:有效!感谢您的帮助。我将很快标记为答案。再次感谢。 @Smith,不客气,对于解析任何数字,应始终寻找 TryParse 系列方法,提供不同的类型。例如int.TryParse、DateTime.TryParse 等 @NewHire:非常感谢!你太棒了! :)【参考方案2】:

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

【讨论】:

有些国家使用“.”作为小数分隔符,其他国家使用“,”作为小数分隔符。你可以通过改变你的文化来改变这一点。有关更多信息,请参阅此答案*** answer【参考方案3】:
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`
        

【讨论】:

以上是关于检查 TextBox 输入是不是为十进制数 - C#的主要内容,如果未能解决你的问题,请参考以下文章

检查列是不是具有正确的十进制数

c++两个自然数(输入的十进制数转换为二进制时,两个数的位数相同。) 输出:有效则有效,无效则无效

编程c语言程序,输入一个五位数,判断是不是为对称说,如:12321,20202都是对称数

3. 从键盘上输入一个八进制数,利用指针将其转换为十进制数并输出 C语言 很急

如何在C中检查十六进制数(%x)是否以某个数字开头?

C语言 判断一个数的二进制数第7位是不是为1