查找 ListView 列名称的最佳方法是什么?
我使用在此论坛上找到的过程将 DataTable 转换为 List,但我无法将 Id 列放在首位,尤其是因为并非所有 DataTable 都有“Id”列。
我可以在集合 listView.Columns.ToString() 中搜索,但我看到的格式是:
“列标题:文本:ID”
我必须对其进行解析以找到正确的名称“Id”。这看起来不像 C# 的精神。
我也试过了:listView.SelectedItems[0].SubItems["Id"]
但这不会编译。
好的,这是完整的代码。确切的问题是用户在 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++;
}