将 listviewitem 投射到 System.IConvertible
Cast listviewitem to System.IConvertible
我有以下问题...我有一个列表视图,其中有一些数字 (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));
}
现在我得到以下异常:
object of type "System.Windows.Forms.ListViewItem" can not be
converted to the type "System.IConvertible".
如何解决这个问题?
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);
}
我有以下问题...我有一个列表视图,其中有一些数字 (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));
}
现在我得到以下异常:
object of type "System.Windows.Forms.ListViewItem" can not be converted to the type "System.IConvertible".
如何解决这个问题?
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);
}