如何从文本文件中获取值并选择具有该值的复选框?
我尝试使用此代码获取等于的值:
string installerfilename = string.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "installer.ini");
IEnumerable<string> inilines = File.ReadAllLines(installerfilename).AsEnumerable();
string selectedItem = checkedListBox1.SelectedItem.ToString();
bool IsChecked = checkedListBox1.CheckedItems.Contains(selectedItem);
inlines = inlines.Select(line => line == string.Format("product={0}", selectedItem))
? Regex.Replace(line, string.Format("product={0}", selectedItem), string.Format(@"product={0}", selectedItem)) : line);
我也试过这个:
foreach (var line in inilines)
{
if (line.Contains("product={0}"))
{
IsChecked = true;
//checkedListBox1.CheckedItems =true;
}
但我不知道如何检查CheckedListBox中的框,这些框的行数等于行product="name of checkbox"
答案 0 :(得分:2)
你可以这样做:
var lines = System.IO.File.ReadAllLines(@"D:\Test.txt");
lines.ToList()
.ForEach(item =>
{
//check if item exists in CheckedListBox set it checked.
//We find the index of the item, -1 means that item doesn't exists in CheckedListBox
var index = this.checkedListBox1.Items.IndexOf(item);
if(index >=0)
this.checkedListBox1.SetItemChecked(index, true);
});
注意:强>
检查所有项目:
要按照索引检查项目,您可以使用this.checkedListBox1.SetItemChecked(i, true);
,因此,为了检查所有项目,您可以执行以下操作:
for (int i = 0; i < this.checkedListBox1.Items.Count; i++)
{
this.checkedListBox1.SetItemChecked(i, true);
}
针对您的具体情况:
你有一个包含以下内容的文件:
product=item1
#product=item2
#product=item3
product=item4
这意味着应该检查item1和item4,您可以使用Where
和Select
从行中选择所需内容,例如:
lines.Where(x=>!x.StartsWith("#"))
.Select(x=>x.Replace("Product=","").Trim())
.ToList()
.ForEach(item =>
{
var index = this.checkedListBox1.Items.IndexOf(item);
if(index >=0)
this.checkedListBox1.SetItemChecked(index, true);
});