我有一个文本文件,每行一个单词,代表我之前检查过的checkedListBox。现在,当重新运行应用程序时,我希望已经检查了checkedListBox项,我尝试过:
System.IO.StreamReader file = new System.IO.StreamReader(@"checked.txt");
foreach (var checked in file.ReadLine())
{
lstCheckBox.SetItemChecked(checked, true);
}
这似乎不起作用,虽然调试应用程序崩溃,我出错的任何想法?
错误:
InvalidArgument=Value of '97' is not valid for 'index'.
Parameter name: index
固定
foreach (var checked in File.ReadAllLines(@"checked.txt"))
{
int index = lstCheckBox.Items.IndexOf(checked);
if (index > 0)
{
lstCheckBox.SetItemChecked(index, true);
}
}
答案 0 :(得分:1)
这是因为ReadLine
返回一行,而你正在迭代行中的字符。
string line;
while ((line = file.ReadLine()) != null)
{
var index = int.Parse(line);
lstCheckBox.SetItemChecked(checked, true);
}
应该解决问题。
或者,您可以使用以下代码(不使用StreamReader
)。
foreach (var line in File.ReadAllLines("checked.txt"))
{
var index = int.Parse(line);
lstCheckBox.SetItemChecked(checked, true);
}