如何使代码适用于所有行?

时间:2015-09-29 13:21:43

标签: c#

我有下一个代码,当选择checkbox中的checkedListBox时,他们想要更改文本文件中的行。代码工作,但只是为了一些行,我不明白是什么原因,因为不适合所有人。

private void checkedListBox2_SelectedIndexChanged(object sender, EventArgs e)
{
    string installerfilename = string.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "installer.ini");
    IEnumerable<string> inilines = File.ReadAllLines(installerfilename).AsEnumerable();

    string selectedItem = checkedListBox2.SelectedItem.ToString();
    bool IsChecked = checkedListBox2.CheckedItems.Contains(selectedItem);
    //bool IsChecked2 = inilines.Contains("#product=");

    if (IsChecked)
        inilines = inilines.Select(line => line == string.Format("#product={0}", selectedItem)
                                           ? Regex.Replace(line, string.Format("#product={0}", selectedItem), string.Format(@"product={0}", selectedItem))
                                           : line);

    else
        inilines = inilines.Select(line => (line == string.Format("#product={0}", selectedItem) || line == string.Format(@"product={0}", selectedItem))
                                           ? Regex.Replace(line, string.Format(@".*product={0}", selectedItem), string.Format(@"#product={0}", selectedItem))
                                           : line);

    string strWrite = string.Join(Environment.NewLine, inilines.ToArray());
    File.WriteAllText(installerfilename, strWrite);
}

在下一行中不能正常工作的示例: 当在checkedListBox上检查通信工具箱,通信模块组,通信工具箱时,在installer.ini中我有下一个更改:

#product=Aerospace Toolbox => product=Aerospace Toolbox
#product=Communications Blockset => product=Communications Blockset
#product=Communications Toolbox => remain the same      #product=Communications Toolbox

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

我会更改以下内容

  string selectedItem = checkedListBox2.SelectedItem.ToString();
    bool IsChecked = checkedListBox2.CheckedItems.Contains(selectedItem);

bool IsChecked = checkedListBox2.CheckedItems.Contains(checkedListBox2.SelectedItem);