在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如何实现最好?

解决方案 »

  1.   

    试试在 ListView 尺寸改变事件里根据高度添加列,手动把一部分数据绑定过去
      

  2.   

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

  3.   


    感谢您的回复。这种方法确实可以实现,不过我希望Items成员不要受影响。Listview是否有内置这种属性,形如Listview.ShowStyle = TopTopBottom 时就是正常的从上到下填充,而Listview.ShowStyle = LetfToRight时就是从左到右填充?而Columns数量始终为2。另外,如果我想根据listview的高度添加固定行数应该如何设置?
    比如:listview的高度为480,想加30行(第31行折返),是否通过设置字体大小实现,这个值如何计算?
      

  4.   

    你先找个合适的字体,加几行,测量下每行的高度,然后 Listview 高度改变的时候,就用总高度除以行高,值就是能显示的行数,再总行数除这个得出需要的列数,最后从第一列开始绑定数据
      

  5.   

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

  6.   

    我可能没说清楚,我是想通过调整字体大小来适应listView1的高度,使之刚好填充到30行。
    问题是通过变化字体大小根本实现不了刚好填充到30行,要么是到29行,下面30行出现一半,要么一下就到34行了。
      

  7.   

    还是用#3楼 的方法实现了,取Items时候,后台自己处理一下。