日期:2014-05-18  浏览次数:20821 次

如何让Listview的列从左向右排,没有从上到下的滚动条
在Listview中共有2列:
第1列:A01,A02,……
第2列:01,02,……

正常lvw.View = View.Details;时,这两列从上到下排,多于一屏时,右面会出现上下移动的滚动条:
A01 01  
A02 02  
A03 03  
...  
A19 19  
A20 20  
A21 21
A22 22
A23 23
...
A39 39
A40 40
现在想要实现内容多于一屏时,让后面的内容折向右面(右面不会出现上下移动的滚动条):
A01 01 A21 21
A02 02 A22 22
A03 03 A23 23
... ...
A19 19 A39 39
A20 20 A40 40
假设A20这里是Listview的bottom

如何实现最好?

------解决方案--------------------
试试在 ListView 尺寸改变事件里根据高度添加列,手动把一部分数据绑定过去
------解决方案--------------------
没添加一条记录,用api的 GetWindowLong判断是否出现了滚动条,如果出现了,从最后添加的记录开始,逐条添加到现有记录的subitems上去

判断是否有滚动条
------解决方案--------------------
探讨
引用:

没添加一条记录,用api的 GetWindowLong判断是否出现了滚动条,如果出现了,从最后添加的记录开始,逐条添加到现有记录的subitems上去

判断是否有滚动条


感谢您的回复。这种方法确实可以实现,不过我希望Items成员不要受影响。Listview是否有内置这种属性,形如Listview.ShowStyle = TopTopBottom 时就……

------解决方案--------------------
探讨
引用:

……

Listview没有行高的概念。全由字体大小控制,而listView1.Font.Size是一种奇怪的emSize单位,我试了一下它和PX之间比例好像不是一个常数,因为我用listView1.Size.Height/ (co * 30f)来指定listView1.Font.Size。
经过测试发现Font.Size与co并不是线性关系:当co取1.48-……