我们在 Visual Studio 2017 中有 ac# Winforms 项目。加载表单时,它会使用设置中的值填充复选框控件。
默认情况下,复选框内的所有项目都未选中。
稍后使用另一个按钮,我们会得到一个用逗号分隔的字符串,例如 (apple,oranges,kiwies)
我们想要做的是如果该项目存在于复选框中,与我们得到的字符串相比,然后使其被选中。
任何人都可以帮忙吗?
我们在 Visual Studio 2017 中有 ac# Winforms 项目。加载表单时,它会使用设置中的值填充复选框控件。
默认情况下,复选框内的所有项目都未选中。
稍后使用另一个按钮,我们会得到一个用逗号分隔的字符串,例如 (apple,oranges,kiwies)
我们想要做的是如果该项目存在于复选框中,与我们得到的字符串相比,然后使其被选中。
任何人都可以帮忙吗?
SetItemCheckState
您可以使用该方法通过使用内部项目的索引来检查 checkListBox的项目checkListBox.Items
。您可以使用返回与字符串匹配的项目的索引的方法checkListBox.Items
检查字符串是否存在。IndexOf
如果checkListBox.Items
包含字符串,则将检查所需的复选框,否则IndexOf
将返回-1
并且不进行检查。这是一个例子:
private void button1_Click(object sender, EventArgs e)
{
string fruit = "apple, oranges, kiwies";
string[] fruitArr = fruit.Split(',').Select(x=>x.Trim()).ToArray();
int index = 0;
foreach (var item in fruitArr)
{
index = checkedListBox1.Items.Cast<string>().ToList().IndexOf(item);
if (index > -1)
{
checkedListBox1.SetItemCheckState(index, CheckState.Checked);
}
}
}
填充checkListBox
:
private void Form1_Load(object sender, EventArgs e)
{
List<string> fruitList = new List<string>() { "pineapple","banana","apple","oranges" };
foreach (var fruit in fruitList)
{
checkedListBox1.Items.Add(fruit);
}
}