";输入字符串的格式不正确“;设置NumericUpDown值时
本文关键字:设置 NumericUpDown 不正确 值时 quot 输入 字符串 格式 | 更新日期: 2023-09-27 18:19:48
我不明白为什么这不起作用。
我正在使用一个文件在我的程序中设置一堆。我正在使用分隔符读取文件的内容。我的文本文件如下:The Message$1$5001&5002&5003
当我试图读取文件中数值的值时,我在第nudInterval.Value = decimal.Parse(setting);
行遇到错误:Input string was not in a correct format.
我就是这样做的:
if (!lastUsed.EmptyFile())
{
string[] allSettings = lastUsed.Text.Split('$');
int settingCount = 0;
foreach (string setting in allSettings)
{
settingCount++;
if (settingCount == 1)
{
txtText.Text = setting;
}
else if (settingCount == 2)
{
if (setting == "0") tbType.SelectedTab = tbInterval;
else tbType.SelectedTab = tbRange;
}
else if (settingCount == 3)
{
nudInterval.Value = decimal.Parse(setting);
}
else if (settingCount == 4)
{
nudMin.Value = decimal.Parse(setting);
}
else if (settingCount == 5)
{
nudMax.Value = decimal.Parse(setting);
}
}
}
这是因为您的分隔符有一半是&,而不是美元。
这意味着您正在尝试执行
nudInterval.Value = decimal.Parse("5001&5002&5003");
这将失败。
如果这些是有效的值,您可以更改您的拆分语句:
string[] allSettings = lastUsed.Text.Split(new char[] {'$', '&'});
或者替换&拆分前带有$:
string[] allSettings = lastUsed.Text.Replace('&', '$').Split('$');
这是int.Parse
抛出的FormatException
的消息。什么是setting
?你认为这是一个有效数字的字符串,但事实并非如此。它可能会挂上一个&
如果添加Console.WriteLine(setting)
、MessageBox.Show(setting)
,或者只是设置一个断点并在调试器中查看setting
,会发生什么?