C# 将listviewitem强制转换为System.IConvertible

C# 将listviewitem强制转换为System.IConvertible,c#,winforms,listview,iconvertible,C#,Winforms,Listview,Iconvertible,我有以下问题。。。我有一个列表视图,其中有一些数字(ID)。现在我想用一些列表框来排列它们,这样我就可以进行典型的SQL搜索(使用或、和)。因此,listview以这种方式填充: for (int i = 0; i < simIdCells.Count; i++) { ListViewItem store = new ListViewItem(simIdCells[i]); store.SubItem

我有以下问题。。。我有一个列表视图,其中有一些数字(ID)。现在我想用一些列表框来排列它们,这样我就可以进行典型的SQL搜索(使用或、和)。因此,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();
            }
现在我得到了以下异常:

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


我如何解决这个问题

无法将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);
}
第二种方法:

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);
}
for(int i=0;i
错误试图告诉您,将ListViewItem转换为数字是没有意义的。是的,但必须有一种方法将其转换为整数,否则我错了吗?他告诉我,在第一种方法中,type对象没有.Text,在第二种方法中,找不到对象的.Tag尝试在for循环中用ListViewItem替换var。现在,我得到了一个.Tag处的NullReferenceException。selectedItem有一个值,但标记为空。您使用的是哪种方法?您只需要使用其中一个。我再次更新了第二种方法的答案。好的,我现在使用了第一种方法,但我将它改为foreach(ListViewItem selectedItem in listView1.SelectedItems){simidements.Add(Convert.ToInt32(selectedItem.Text));},现在它可以工作了!感谢使用.Text提供的解决方案!