使用VS2010 Express,C#及其WinForms应用程序。
这里我有三个文本框(aTextBox,bTextBox,cTextBox),Inputs是字符串,然后使用int.Parse(aTextBox.Text)转换为整数。
然后是一个Button(calcBtn)方法,它将计算费用,然后在一些数学后将结果显示到Result groupBox上的特定TextBox,它再次包含结果的文本框...
问题是由我解析的方式或它执行的顺序引起的。如果填写了任何文本框,则应显示结果,而不是格式异常。在这里我卡住了,因为在calcBtn中我正在解析所有文本框,如果其中一个是空的,那么就会发生异常。编译器是我想尝试解析空文本框中的空字符串,我不希望它。
如果你明白我的意思,有什么建议吗? :)
这是GUI的样子
答案 0 :(得分:3)
您可以使用扩展方法...
1)方法
public static class TE
{
public static int StringToInt(this string x)
{
int result;
return int.TryParse(x, out result) ? result : 0;
}
}
2)使用
System.Windows.Forms.TextBox t = new System.Windows.Forms.TextBox();
int x = t.Text.StringToInt();
答案 1 :(得分:2)
Int32.Parse
方法不接受格式错误的字符串,这包括空字符串。我有两个建议。
您可以先检查字符串是否为空/空格,然后返回0或其他一些默认值:
private static int ParseInteger(string str)
{
if (str == null || str.Trim() == "")
return 0;
// On .NET 4 you could use this instead. Prior .NET versions do not
// have the IsNullOrWhiteSpace method.
//
// if (String.IsNullOrWhiteSpace(str))
// return 0;
return Int32.Parse(str);
}
或者您可以简单地忽略所有解析错误,将其视为0.这会将""
,"123abc"
和"foobar"
之类的内容视为零。
private static int ParseInteger(string str)
{
int value;
if (Int32.TryParse(str, out value))
return value;
return 0;
}
您采取的方法取决于您的应用程序的特定需求。
答案 2 :(得分:0)
您可以这样做:
private static int ParseInteger(string str)
{
int value;
Int32.TryParse(str, out value);
return value;
}
没有任何if,因为如果失败则将TryParse设置为0