相关疑难解决方法(0)

如何读取多列ListView控件的列名?

查找ListView列的名称的最佳方法是什么?

我使用我在此论坛上找到的程序将DataTable转换为List,但我无法将Id列放在第一位,特别是因为并非我的所有DataTable都有一列"Id".

我可以在集合listView.Columns.ToString()中搜索,但我看到的格式是:

"ColumnHeader:Text:Id"

我必须解析,找到正确的名称"Id".这看起来不像C#的精神.

我也尝试过:listView.SelectedItems[0].SubItems["Id"] 但是没有编译.


好的这是完整的代码.确切的问题是用户使用Courier Names和Ids在listView中选择一行,但它也可以是Ids和Names.找到所选快递的ID的最快方法是:

ListViewItem si = listCouriers.SelectedItems[0];
CourierId = si.SubItems["Id"].Text;
Run Code Online (Sandbox Code Playgroud)

但这不起作用.硬编码的方式就是这样,但我不能保证有一天会使用错误的列:

ListViewItem si = listCouriers.SelectedItems[0];
CourierId = si.SubItems[1].Text;
Run Code Online (Sandbox Code Playgroud)

使用@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++;
}
Run Code Online (Sandbox Code Playgroud)

c# listview multiple-columns

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×1

listview ×1

multiple-columns ×1