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