我有一个带有3个文本框的Windows窗体应用程序,如果第一个文本框中的文本为0,则另外两个文本框设置为只读,如果为1,则只读取最后一个文本框,如果是2,所有文本框都是可编辑的。
我的代码有效,但如果我输入一个值然后更改它,程序崩溃了,我该如何解决?
这是我的第一个文本框(NumberOfTusks)的代码,它根据值改变(Tusk1Length)和(Tusk2Length)的只读属性。
private void NumberOfTuskstxt_TextChanged(object sender, EventArgs e)
{
if (int.Parse(NumberOfTuskstxt.Text) == 0)
{
Tusk1Lengthtxt.Text = "N/A";
Tusk1Lengthtxt.ReadOnly = true;
Tusk2Lengthtxt.Text = "N/A";
Tusk2Lengthtxt.ReadOnly = true;
}
else if (int.Parse(NumberOfTuskstxt.Text) == 1)
{
Tusk1Lengthtxt.Text = "";
Tusk1Lengthtxt.ReadOnly = false;
Tusk2Lengthtxt.Text = "N/A";
Tusk2Lengthtxt.ReadOnly = true;
}
else
{
Tusk1Lengthtxt.Text = "";
Tusk1Lengthtxt.ReadOnly = false;
Tusk2Lengthtxt.Text = "";
Tusk2Lengthtxt.ReadOnly = false;
}
}
如果我在NumberOfTusks中输入1,然后将值更改为2,则代码崩溃并给我这个""未处理的类型' System.FormatException'发生在mscorlib.dll"" 撞击退格后发生了崩溃。我怎么能解决这个问题,这样如果我改变了值,它就不会崩溃?
答案 0 :(得分:1)
这听起来像是当您按下退格键并且正在有效地执行
时发生错误 if (int.Parse("") == 0)
这将是抛出格式异常的原因。我建议您查看类似
的内容if (!string.IsNullOrEmpty(NumberOfTuskstxt.Text))
{
//Your existing code goes here
}
else
{
//Handle the blank textbox
}
要捎带DangerZone's评论,您可能还想使用TryParse而不是Parse来防止非数字用户输入。