![6848c51eed602987354407e4be3cd492.png](https://i-blog.csdnimg.cn/blog_migrate/5d67a86e8ed9a4bb87c4deb43aa6bb0b.png)
最近研究了下ListView控件,发现有很多问题,google出来的东西一塌糊涂,自己总结一下:
ListView与EXCEL在外观上的差别
首先,ListView看起来确实很像EXCEL表格,但是要注意,ListView的第一行是不算在“表格里面去的”,真正的“A1”是在第二行第一个的位置上。第一行是Columns行,可以理解为表头,而且这个表头不能取消,一定要存在。
ListView的View属性
要想当成表格用,首先要把view属性调整为detail,默认是Largeico
ListView中“单元格”的定位
上面讲到和EXCEL不同,看上去的这个表格其实第一行不算表格,如果要访问任意一个单元格的话可以参见下图:
![1dae0d767bfc2960edc2c2e5b4b51235.png](https://i-blog.csdnimg.cn/blog_migrate/568938c43d95a9df07a10080cdf08af8.jpeg)
从图上可以看出,第一行其实是一个Columns集合,需要通过ListView1.Columns(i)来访问。
从第二行开始才是真正的表格。需要先访问第几行,然后是第几列的顺序来定位。也就是ListView1.items(y+1).subitems(x)来定位。这里的X和Y都是从0开始计,只不过Y=0那行就是Columns。
还有一个问题,在你新建任何“单元格”之前,是不能向这个单元格读取或写入数据的,即使看起来像是个没有数据的“单元格”。必须在控件属性里面指派值,或者使用add方法生成后“单元格”后,方能操作“单元格”。比如你新建了一行表头共10列,也新建了第一列共10行,是不能通过items(5).subitems(5)来操作的。