从文本文件中检索checkedListBox中的已检查项

时间:2013-08-15 22:57:40

标签: c# checkedlistbox

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

1 个答案:

答案 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);      
}