将listViewItem铸造到system.convertible



我有以下问题...我有一个列表视图,其中有一些数字(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);
}

相关内容

  • 没有找到相关文章

最新更新