0

我有一个每行一个单词的文本文件,它代表我之前检查过的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);
    }
}
4

1 回答 1

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);      
}
于 2013-08-15T23:11:52.520 回答