C# 将listviewitem强制转换为System.IConvertible
我有以下问题。。。我有一个列表视图,其中有一些数字(ID)。现在我想用一些列表框来排列它们,这样我就可以进行典型的SQL搜索(使用或、和)。因此,listview以这种方式填充: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
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提供的解决方案!