我是编码的新手,所以要好好。我正在尝试在程序中打开.ini文件,但是当我这样做时,我一直收到这个错误。
mscorlib.dll中发生未处理的“System.FormatException”类型异常
其他信息:输入字符串的格式不正确。
我的代码:
private void btnOpen_Click(object sender, EventArgs e)
{
OpenFileDialog o1 = new OpenFileDialog();
o1.Filter = "INI File |*.ini";
if (o1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
INIFile ini = new INIFile(o1.FileName);
string reini = ini.Read ("Profile Settings", "User ID");
int i = int.Parse(reini);
textBox1.Text = i.ToString();
textBox3.Text = i.ToString();
textBox4.Text = i.ToString();
textBox5.Text = i.ToString();
string rechini = ini.Read("Startup", "Check");
if(rechini == "checked")
{
checkBox1.Checked = true;
}
else
{
checkBox1.Checked = false;
}
}
}
}
然后int i = int.parse(reini);
标记为绿色
答案 0 :(得分:1)
用户ID很可能是字母数字字符串。如果用户ID可以是字母数字和整数类型,那么使用.TryParse()
会更安全。
int i = -1;
string user_id = string.Empty;
if (!int.TryParse(reini, out i))
{
user_id = reini;
}
if (!String.IsNullOrEmpty(user_id)) // it is an alphanumeric
{
}
else // it is an integer, use i
{
}
<强>更新强> 由于您的用户ID是字符串,因此只需使用字符串:
private void btnOpen_Click(object sender, EventArgs e)
{
OpenFileDialog o1 = new OpenFileDialog();
o1.Filter = "INI File |*.ini";
if (o1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
INIFile ini = new INIFile(o1.FileName);
string user_id = ini.Read ("Profile Settings", "User ID");
textBox1.Text = user_id;
textBox3.Text = user_id;
textBox4.Text = user_id;
textBox5.Text = user_id;
string rechini = ini.Read("Startup", "Add To Startup");
if(rechini == "checked")
{
checkBox1.Checked = true;
}
else
{
checkBox1.Checked = false;
}
}
}
}
<强> UPDATE2 强>
Check
INI文件部分中没有Startup
个密钥。上面的代码已更新。有Add To Startup
,我想你需要这个。
答案 1 :(得分:1)
正如stribizhev所说,在这些情况下,TryParse比Parse更好。
尤其如此,因为您的用户ID是一串字符 - 而不是数字。
此外,'启动''已检查'将始终失败,因为该设置名为“添加到启动”(除非您将有另一个名为“已检查”的设置不在您提供的文件中)。
所以,改为:
private void btnOpen_Click(object sender, EventArgs e)
{
OpenFileDialog o1 = new OpenFileDialog();
o1.Filter = "INI File |*.ini";
if (o1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
INIFile ini = new INIFile(o1.FileName);
string reini = ini.Read("Profile Settings", "User ID");
textBox1.Text = reini;
textBox3.Text = reini;
textBox4.Text = reini;
textBox5.Text = reini;
string rechini = ini.Read("Startup", "Add To Startup");
checkBox1.Checked = rechini == "checked";
}
}