ListViewの列の名前を見つけるための最良の方法は何ですか?
このフォーラムで見つけた手順を使用してDataTableをリストに変換しましたが、特にすべてのDataTableに「Id」列があるわけではないため、Id列を最初に配置することはできません。
コレクションlistView.Columns.ToString()で検索できますが、表示される形式は次のとおりです。
"ColumnHeader:テキスト:Id"
これを解析して、適切な名前「Id」を見つける必要があります。これはC#の精神のようには見えません。
私も試しました:listView.SelectedItems[0].SubItems["Id"]
しかし、それはコンパイルされません。
OKこれが完全なコードです。正確な問題は、ユーザーがlistViewでCourier NamesとIdsを使用して行を選択することですが、IdsとNamesをこの順序で選択することもできます。選択した宅配便のIDを見つける最も速い方法は次のとおりです。
ListViewItem si = listCouriers.SelectedItems[0];
CourierId = si.SubItems["Id"].Text;
しかし、それは機能しません。ハードコーディングされた方法はこれですが、いつか間違った列が使用されることを保証することはできません。
ListViewItem si = listCouriers.SelectedItems[0];
CourierId = si.SubItems[1].Text;
@HuorSwordsメソッドを使用すると、このそれほど単純ではないソリューションが得られます。これは私にとっては機能しますが、の列の順序がColumnHeaderCollection
フォームの表示に対応しているという合理的な仮定に依存します。
ListViewItem si = listCouriers.SelectedItems[0];
string CourierId = null;
int icol = 0;
foreach (ColumnHeader header in listCouriers.Columns)
{
if (header.Text == "Id")
{
CourierId = si.SubItems[icol].Text;
break;
}
icol++;
}