我有以下问题...我有一个列表视图,其中有一些数字(id)。现在,我想使用一些列表盒安排它们,以便可以进行典型的SQL搜索(使用OR和)。因此,ListView以这种方式填写:
for (int i = 0; i < simIdCells.Count; i++)
{
ListViewItem store = new ListViewItem(simIdCells[i]);
store.SubItems.Add(simNameCells[i]);
form5.listViewCap.Items.Add(store);
form5.listViewCap.Items[0].Selected = true;
form5.listViewCap.Select();
}
因此,我的listView中总是选择一个值。现在,当我想进行搜索时,我会使用此代码首先将我的元素填充到列表中:
foreach(var selectedItem in listView1.SelectedItems)
{
simIdElements.Add(Convert.ToInt32(selectedItem));
}
现在我得到以下例外:
类型" system.windows.forms.listViewItem"的对象不可能 转换为" system.convertible"类型。
如何解决这个问题?
listViewItem不能转换为整数。您应该将返回的项目文本转换为int,或者使用其标签属性以保持整数使用该项目。
第一种方法:
foreach(ListViewItem selectedItem in listView1.SelectedItems)
{
string text = selectedItem.Text;
simIdElements.Add(Convert.ToInt32(text));
}
第二种方法:
for (int i = 0; i < simIdCells.Count; i++)
{
int value = simIdCells[i];
ListViewItem store = new ListViewItem(value.ToString());
store.Tag = value;
ListViewItem subItem = new istViewItem(value.ToString());
subItem.Tag = value;
store.SubItems.Add(subItem);
form5.listViewCap.Items.Add(store);
form5.listViewCap.Items[0].Selected = true;
form5.listViewCap.Select();
}
...
...
foreach(var selectedItem in listView1.SelectedItems)
{
simIdElements.Add((int)selectedItem.Tag);
}