C# C语言中的简单输入验证#

C# C语言中的简单输入验证#,c#,C#,我正在尝试将输入验证添加到文本框中,以确保如果用户输入数字以外的任何内容,我的标签将显示“仅输入数字”。我已尝试对此使用“如果”语句(查看下面的代码),但它不起作用。我的程序没有将消息发布到“输入一个数字”中,而是使用此错误消息崩溃 “System.FormatException”:输入字符串的格式不正确 我是个笨蛋,所以我不知道如何解决这个问题 名称空间计算器 { 公共部分类frmCalculator:表单 { 公共frmCalculator() { 初始化组件(); } string

我正在尝试将输入验证添加到文本框中,以确保如果用户输入数字以外的任何内容,我的标签将显示“仅输入数字”。我已尝试对此使用“如果”语句(查看下面的代码),但它不起作用。我的程序没有将消息发布到“输入一个数字”中,而是使用此错误消息崩溃

“System.FormatException”:输入字符串的格式不正确

我是个笨蛋,所以我不知道如何解决这个问题

名称空间计算器 { 公共部分类frmCalculator:表单 { 公共frmCalculator() { 初始化组件(); }

    string name = "";//Stores the Name typed into the text box
    string classType = "";//Stores the Class typed into the text box
    decimal grade;// Stores the Grade typed into the text box


    private void btnSubmit_Click(object sender, EventArgs e)
    {

        classType = txtBoxClass.Text;
        grade = Convert.ToDecimal(txtBoxGrade.Text);
        name = txtBoxName.Text;

        switch (classType)
        {
            //Case for Math class and grade comparison
            case "m":
            case "M":
                if (grade >= -1 && grade <= 100)
                {
                    if (grade >= 94)
                    {
                        lblAnswer.Text = name + "'s grade in Math is an A";
                    }
                    if (grade <= 93)
                    {
                        lblAnswer.Text = name + "'s grade in Math is an A-";
                    }
                    if (grade <= 89)
                    {
                        lblAnswer.Text = name + "'s grade in Math is a B+";
                    }
                    if (grade <= 86)
                    {
                        lblAnswer.Text = name + "'s grade in Math is an B";
                    }
                    if (grade <= 83)
                    {
                        lblAnswer.Text = name + "'s grade in Math is a B-";
                    }
                    if (grade <= 79)
                    {
                        lblAnswer.Text = name + "'s grade in Math is a C+";
                    }
                    if (grade <= 76)
                    {
                        lblAnswer.Text = name + "'s grade in Math is a C";
                    }
                    if (grade <= 73)
                    {
                        lblAnswer.Text = name + "'s grade in Math is a C-";
                    }
                    if (grade <= 69)
                    {
                        lblAnswer.Text = name + "'s grade in Math is a D";
                    }
                    if (grade < 65)
                    {
                        lblAnswer.Text = name + "'s grade in Math is an F";
                    }

                    //Clears the text boxes when the Submit button is clicked.
                    txtBoxName.Text = "";
                    txtBoxClass.Text = "";
                    txtBoxGrade.Text = "";
                }
                else { lblAnswer.Text = "Input a number!"; }
                break;

            //Case for Science class and grade comparison
            case "s":
            case "S":
                if (grade >= 94)
                {
                    lblAnswer.Text = name + "'s grade in Science is an A";
                }
                if (grade <= 93)
                {
                    lblAnswer.Text = name + "'s grade in Science is an A-";
                }
                if (grade <= 89)
                {
                    lblAnswer.Text = name + "'s grade in Science is a B+";
                }
                if (grade <= 86)
                {
                    lblAnswer.Text = name + "'s grade in Science is an B";
                }
                if (grade <= 83)
                {
                    lblAnswer.Text = name + "'s grade in Science is a B-";
                }
                if (grade <= 79)
                {
                    lblAnswer.Text = name + "'s grade in Science is a C+";
                }
                if (grade <= 76)
                {
                    lblAnswer.Text = name + "'s grade in Science is a C";
                }
                if (grade <= 73)
                {
                    lblAnswer.Text = name + "'s grade in Science is a C-";
                }
                if (grade <= 69)
                {
                    lblAnswer.Text = name + "'s grade in Science is a D";
                }
                if (grade < 65)
                {
                    lblAnswer.Text = "'s grade in Science is an F";
                }

                //Clears the text boxes when the Submit button is clicked.
                txtBoxName.Text = "";
                txtBoxClass.Text = "";
                txtBoxGrade.Text = "";

                break;

            //Case for English class and grade comparison.
            case "e":
            case "E":
                if (grade >= 94)
                {
                    lblAnswer.Text = name + "'s grade in English is an A";
                }
                if (grade <= 93)
                {
                    lblAnswer.Text = name + "'s grade in English is an A-";
                }
                if (grade <= 89)
                {
                    lblAnswer.Text = name + "'s grade in English is a B+";
                }
                if (grade <= 86)
                {
                    lblAnswer.Text = name + "'s grade in English is an B";
                }
                if (grade <= 83)
                {
                    lblAnswer.Text = name + "'s grade in English is a B-";
                }
                if (grade <= 79)
                {
                    lblAnswer.Text = name + "'s grade in English is a C+";
                }
                if (grade <= 76)
                {
                    lblAnswer.Text = name + "'s grade in English is a C";
                }
                if (grade <= 73)
                {
                    lblAnswer.Text = name + "'s grade in English is a C-";
                }
                if (grade <= 69)
                {
                    lblAnswer.Text = name + "'s grade in English is a D";
                }
                if (grade < 65)
                {
                    lblAnswer.Text = name + "'s grade in English is an F";
                }

                //Clears the text boxes when the Submit button is clicked.
                txtBoxName.Text = "";
                txtBoxClass.Text = "";
                txtBoxGrade.Text = "";

                break;

            default:
                lblAnswer.Text = "Invalid Class type! Enter M for Math, S for Science or \nE for English only.";
                txtBoxClass.Text = "";//Clears just the Class text box.

                break;
    }

    }

    private void btnExit_Click(object sender, EventArgs e)
    {
        //Exits the application when the Exit button is clicked.
        this.Close();
    }

}
string name=”“;//将键入的名称存储到文本框中
string classType=”“;//将键入的类存储到文本框中
十进制分数;//存储输入到文本框中的分数
私有void btnSubmit\u单击(对象发送者,事件参数e)
{
classType=txtBoxClass.Text;
grade=Convert.ToDecimal(txtBoxGrade.Text);
name=txtBoxName.Text;
开关(类类型)
{
//数学课堂与年级比较案例
案例“m”:
案例“M”:
如果(等级>=-1&&grade=94)
{
lblAnswer.Text=name+““的数学成绩为A”;
}

if(grade使用
Decimal.TryParse
检查输入文本是否为十进制,如果不是,则不会引发异常

if(Decimal.TryParse(txtBoxGrade.Text, out grade))
{
   // Your code
}
else
{
   lblAnswer.Text = "Input a number!";
}
您应该使用数字原语的方法来查看是否可以将输入转换为数字

decimal grade;
if (Decimal.TryParse(txtBoxGrade.Text, out grade)) {
    // Its a valid number - the rest of your code goes here
    // and uses the grade variable as the number you want.
} else {
    // Its not a valid number
    lblAnswer.Text = "Input a number only.";
}

您可以使用TryParse查看它是否是一个数字


请尝试下面的内容。您可以使下面的代码更加完善。无论如何,要使改进尽可能接近您的代码,您可以进行以下几项改进:-

  • 使用TryParse检查等级是否为有效的小数
  • 如果需要,请使用else

  • 条件if(grade>-1&&grade)发布更多代码。请确保包含引发异常的行。我在您发布的内容中没有看到任何会引发
    FormatException
    @Amy抱歉,我发布了引发错误的行,但它似乎被切断了。下面是“开关”开头上方的内容“
    classType=txtBoxClass.Text;**grade=Convert.ToDecimal(txtBoxGrade.Text);**这就是抛出错误名称的原因。
    txtBoxName.Text;
    根据您的评论,我会说
    txtBoxGrade.Text
    不能转换为十进制。它在您的手表窗口中包含什么值?什么类型是
    name
    classtype
    grade
    ?@reds是的。我声明为十进制的唯一变量是'G'雷德,这个修好了,非常感谢。
    decimal grade;
    if(!decimal.TryParse(txtBoxGrade.Text, out grade))
    {
         MessageBox.Show(string.Format("Unable to parse '{0}'.", txtBoxGrade.Text));
         return;
    }
    
    private void btnSubmit_Click(object sender, EventArgs e)
    {
        var classType = txtBoxClass.Text;
        var name = txtBoxName.Text;
    
        decimal grade;
        if (! decimal.TryParse(txtBoxGrade.Text, out grade))
        {
            lblAnswer.Text = "Input a number!";
            return;
        }            
    
        switch (classType)
        {
            //Case for Math class and grade comparison
            case "m":
            case "M":
                if (grade > -1 && grade <= 100)
                {
                    if (grade >= 94)
                    {
                        lblAnswer.Text = name + "'s grade in Math is an A";
                    }
                    else if (grade <= 93)
                    {
                        lblAnswer.Text = name + "'s grade in Math is an A-";
                    }
                    else if (grade <= 89)
                    {
                        lblAnswer.Text = name + "'s grade in Math is a B+";
                    }
                    else if (grade <= 86)
                    {
                        lblAnswer.Text = name + "'s grade in Math is an B";
                    }
                    else if (grade <= 83)
                    {
                        lblAnswer.Text = name + "'s grade in Math is a B-";
                    }
                    else if (grade <= 79)
                    {
                        lblAnswer.Text = name + "'s grade in Math is a C+";
                    }
                    else if (grade <= 76)
                    {
                        lblAnswer.Text = name + "'s grade in Math is a C";
                    }
                    else if (grade <= 73)
                    {
                        lblAnswer.Text = name + "'s grade in Math is a C-";
                    }
                    else if (grade <= 69)
                    {
                        lblAnswer.Text = name + "'s grade in Math is a D";
                    }
                    else if (grade < 65)
                    {
                        lblAnswer.Text = name + "'s grade in Math is an F";
                    }
    
                    //Clears the text boxes when the Submit button is clicked.
                    txtBoxName.Text = "";
                    txtBoxClass.Text = "";
                    txtBoxGrade.Text = "";
                }
                else { lblAnswer.Text = "Input a number between 0 and 100!"; }
                break;
        }
    }