int InvoerEieren = Convert.ToInt32(txtInvoerEieren.Text);
而txt.InvoerEieren.Text是一个带有随机数的文本框,用户可以放(1 - 999)。
这是计算机运行该行代码时的结果。
mscorlib.dll中发生未处理的“System.FormatException”类型异常
其他信息:输入字符串的格式不正确。
我也尝试过使用“int.Parse()”函数。
编辑:
使用此代码创建新函数时:
int eenGetal = Convert.ToInt32(txtInvoerEieren.Text);
MessageBox.Show(eenGetal.ToString());
它正在工作,这很奇怪......为什么它不能用于其他功能?
答案 0 :(得分:1)
您的问题是文本框中的内容无法转换为int。 int表示整数,不能有任何小数空格。
所以你可以使用1,5,34而不是1,23或4.54。此外,您不能使用大于+/- 2,147,483,647的数字。
如果您需要更大的数字,请改用long
(然后使用long.Parse
)。如果您需要小数点,请使用decimal
(和decimal.Parse
)。请注意,如果要解析小数,则必须考虑文化,因为必须根据与decimal.Parse
一起使用的文化使用正确的小数标记。
由于它是用户输入,您应该考虑使用TryParse
变体,因为如果用户输入的输入不正确(即非数字),它们不会“爆炸”。
答案 1 :(得分:0)
您可以尝试使用Int32.TryParse方法。 如果in值是无效格式,或者只是文本,它应该在内部处理异常并返回零值。
答案 2 :(得分:0)
如果您尝试将字符串转换为Double,则应使用Double.TryParse Method来解析该值,因为它会围绕转换包装try / catch。
double decimalValue;
bool success = Double.TryParse(txtInvoerEieren.Text, out decimalValue);
if(success) { Debug.WriteLine("Successful parsing to Double!"); }
else { Debug.WriteLine("Parsing to Double failed!"); }
类似于转换为Int32值,您应该使用Int32.TryParse Method
int decimalValue;
bool success = Int32.TryParse(txtInvoerEieren.Text, out decimalValue);
if(success) { Debug.WriteLine("Successful parsing to Int32!"); }
else { Debug.WriteLine("Parsing to Int32 failed!"); }
答案 3 :(得分:0)
放Debug.WriteLine(txtInvoerEieren.Text);
看看它是否是您的想法。
这是一个文本框 如果不指定值,则为null或string.empty null和string.empty都将失败该Int解析 如在评论中使用
Int32.TryParse(txtInvoerEieren.Text, out InvoerEieren)
你可以绑定到Int? 但是您需要使用转换器将string.empty转换为null 你需要处理keydown而不允许任何数字。 处理keydown不会处理必须是转换器的sting.empty。 这是我能够绑定到Int的唯一方法。
答案 4 :(得分:0)
如果您不确定用户是否输入了代表正确数字的文字,我建议您使用另一种检查数字有效性的转换方法
int InvoerEieren;
if (Int32.TryParse(txtInvoerEieren.Text, out InvoerEieren)) {
Console.WriteLine("The number is {0}", InvoerEieren);
} else {
Console.WriteLine("\"{0}\" cannot be converted to int!",
txtInvoerEieren.Text);
}
答案 5 :(得分:0)
尝试使用Int32.TryParse
代替Int32.Parse
-
int InvoerEieren;
Int32.TryParse(txtInvoerEieren.Text, out InvoerEieren);
答案 6 :(得分:0)
除非有一些错误的输入,否则这应该永远不会发生。虽然您可以通过在此文本框中添加KeyPress事件来更改此设置。你可以在事件处理函数中添加这些行:
if (char.IsNumber(e.KeyChar))
{
e.Handled = false;
}
else
{
MessageBox.Show("Please Enter Number");
e.Handled = true;
}
我认为这可以解决你的问题。