我正在尝试检查已检查列表框中的每个项目,并根据项目是否已选中对项目执行某些操作。我已经能够使用indexCollection获取已检查的项目,但是我无法获取所有项目,我收到此错误'无法将类型为'System.String'的对象强制转换为'System'。 Windows.Forms.ListViewItem'
foreach (ListViewItem item in checkedListBox2.Items)
{
if (item.Checked == true)
//do something with item.name
else
//do something else with item.name
}
我不确定为什么它会在foreach行中给我字符串转换错误。我怎么能做到这一点?感谢。
答案 0 :(得分:5)
如果您允许复选框具有Indeterminate状态,则应使用GetItemCheckState方法检索复选框的状态
for (int i = 0; i < checkedListBox2.Items.Count; i++)
{
CheckState st = checkedListBox2.GetItemCheckState(checkedListBox2.Items.IndexOf(i));
if(st == CheckState.Checked)
....
else if(st == CheckState.Unchecked)
....
else
... // inderminate
}
否则足以调用返回true / false值的GetItemChecked(对于不确定状态也是如此)
答案 1 :(得分:1)
CheckedListBox.Items包含objects
的集合,而不是ListViewItem
的集合
你可以这样检查
for (int i = 0; i < checkedListBox2.Items.Count; i++)
{
if (checkedListBox2.GetItemChecked(i))
{
//do something with checkedListBox2.Items[i]
}
else
{
//do something else with checkedListBox2.Items[i]
}
}
答案 2 :(得分:1)
如果您允许复选框具有Indeterminate状态,则应使用GetItemCheckState方法检索复选框的状态
for (int i = 0; i < checkedListBox2.Items.Count; i++)
{
CheckState st = checkedListBox2.GetItemCheckState(i);
if(st == CheckState.Checked)
....
else if(st == CheckState.Unchecked)
....
else
... // inderminate
}
否则足以调用返回true / false值的GetItemChecked(对于不确定状态也是如此)