在DataGridView中想要获取某个单元格的对象方法可以如下:
DataGridView.Rows[i].Cell[j]和DataGridView.Rows[i].Cell["ColumnName"]
而ListView中同样的方法却不适用,你也不可以这样用:ListView.Items[i].SubItems["ColumnName"],系统会报异常System.NullReferenceException。
原因:
在ListView的Columns属性集合的编辑器中,当你维护每一列时,会有一个Name属性,这里注意:这个Name属性维护了之后不会串行化到
System.Windows.Forms.ColumnHeader的Name属性中去,而仅仅是生成Name属性
指定名称ColumnHeader对象。
解决办法:
在Desginer中对ColumnHeader对象Name手动赋值,如下:
这样就可以使用ListView.Columns["ColumnName"]这样的语法了。
那么,怎么能使用SubItems取列值,而不是依赖遍历索引取值,我的做法如下:
int index = ListView.Columns["ColumnName"].Index;
string txt = ListView.SelectedItems[0].SubItems[index].Text;