0

我有以下问题...我有一个列表视图,其中有一些数字(ID)。现在我想用一些列表框来排列它们,这样我就可以进行典型的 SQL 搜索(使用 OR、AND)。所以列表视图以这种方式填充:

 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();
            }

所以在我的列表视图中总是有一个值被选中。当我现在想要进行搜索时,我使用此代码首先将我的元素填充到列表中:

   foreach(var selectedItem in listView1.SelectedItems)
        {
           simIdElements.Add(Convert.ToInt32(selectedItem));
        }

现在我得到以下异常:

“System.Windows.Forms.ListViewItem”类型的对象无法转换为“System.IConvertible”类型。

我该如何解决这个问题?

4

1 回答 1

0

ListViewItem 不能转换为整数。您应该将项目文本转换回 int 或使用它的Tag属性将整数值保留在项目中。

第一种方法:

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);
}
于 2015-05-03T14:57:20.563 回答