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

2 番目のアプローチ:

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 に答える