怎么修改listview的ColumnHeaders样式?

rosibo 2009-10-22 05:21:54
关于重绘我第一次接触,一点也不懂,希望能得到帮助。

图1:


图2:


如何才能将图1的这种标准LISTVIEW的头重绘成图2这种样式?寻求详细教学,非常感谢。

...全文
328 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
bdzwj 2009-10-22
  • 打赏
  • 举报
回复
用LVM_GETHEADER消息获取listview的HEADER控件窗口句柄,然后子类化,拦截WM_ERASEBKGRND\WM_PAINT消息重绘
Flyingdragon168 2009-10-22
  • 打赏
  • 举报
回复
排序时,自动在标题上增加一个标识符就可以。
Private Sub lvwUser_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
'用于设置标题的排序
Select Case LCase(ColumnHeader.Key)
Case "user_id" '用于编号
lvwUser.SortKey = 0
Case "user_na" '用户名称
lvwUser.SortKey = 1
Case "user_desc" '用户描述
lvwUser.SortKey = 2
End Select
'设置排序抬头标题
lvwUser.ColumnHeaders(1).Text = "编号"
lvwUser.ColumnHeaders(2).Text = "名称"
lvwUser.ColumnHeaders(3).Text = "描述"
If lvwUser.SortOrder = lvwAscending Then
lvwUser.SortOrder = lvwDescending
ColumnHeader.Text = ColumnHeader.Text & "倒序标识"
Else
lvwUser.SortOrder = lvwAscending
ColumnHeader.Text = ColumnHeader.Text & "顺序标识"
End If
lvwUser.Sorted = True
End Sub
getemail 2009-10-22
  • 打赏
  • 举报
回复
因为我要模仿图2的程序
它的也没做什么分页
说大话谁都会,真做起来就不是那么回事了

[Quote=引用 17 楼 azhilee 的回复:]
你为什么不做分页,
再说你不做分页,也不做即时加载,9000条记录,你就是点一下排序都会半天。
[/Quote]
azhilee 2009-10-22
  • 打赏
  • 举报
回复
你为什么不做分页,
再说你不做分页,也不做即时加载,9000条记录,你就是点一下排序都会半天。
getemail 2009-10-22
  • 打赏
  • 举报
回复
你加上9000条记录测试一下看看什么效果

[Quote=引用 15 楼 azhilee 的回复:]
楼上,我认同 孤独剑
没有好不好用,就看会不会用

最笨的方法,你加完数据,再刷新一下排序都可以,也不至于向你说的,就乱套。
[/Quote]
azhilee 2009-10-22
  • 打赏
  • 举报
回复
楼上,我认同 孤独剑
没有好不好用,就看会不会用

最笨的方法,你加完数据,再刷新一下排序都可以,也不至于向你说的,就乱套。
getemail 2009-10-22
  • 打赏
  • 举报
回复
你排序后再追加数据条目试试

[Quote=引用 13 楼 asftrhgjhkjlkttttttt 的回复:]
引用 6 楼 getemail 的回复:
ListView排序不好用,需要加代码不说,加了也不好用,再添加的时候就乱套了
并且没那个箭头


没有好用不好用,看你会用不会用,我用得就没有问题
[/Quote]
孤独剑_LPZ 2009-10-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 getemail 的回复:]
ListView排序不好用,需要加代码不说,加了也不好用,再添加的时候就乱套了
并且没那个箭头
[/Quote]

没有好用不好用,看你会用不会用,我用得就没有问题
getemail 2009-10-22
  • 打赏
  • 举报
回复
这个我想到了,但是我的程序中不会因为这么点效果动用那么多代码
这不是VB的根本

[Quote=引用 11 楼 asftrhgjhkjlkttttttt 的回复:]
关于颜色楼上的已经说明,我只补充那个列头小三角的问题,需要ListView+imageList完成排序,更换图标.
imageList里加载2幅图,分别是向上\下的小三角,在ListView1_ColumnClick事件里加上下面的代码

    '更换列表头的图标
    If ColumnHeader.Icon = 1 Then
      ColumnHeader.Icon = imageList.ListImages(2).Index
    Else
      ColumnHeader.Icon = imageList.ListImages(1).Index
    End If


如果还有问题,这里来找我
http://topic.csdn.net/u/20090917/13/2dccaaaa-6cfb-4a73-81a1-071ba4c53b3e.html?652
[/Quote]
孤独剑_LPZ 2009-10-22
  • 打赏
  • 举报
回复
关于颜色楼上的已经说明,我只补充那个列头小三角的问题,需要ListView+imageList完成排序,更换图标.
imageList里加载2幅图,分别是向上\下的小三角,在ListView1_ColumnClick事件里加上下面的代码

'更换列表头的图标
If ColumnHeader.Icon = 1 Then
ColumnHeader.Icon = imageList.ListImages(2).Index
Else
ColumnHeader.Icon = imageList.ListImages(1).Index
End If


如果还有问题,这里来找我
http://topic.csdn.net/u/20090917/13/2dccaaaa-6cfb-4a73-81a1-071ba4c53b3e.html?652
vansoft 2009-10-22
  • 打赏
  • 举报
回复
有一个winxpc什么什么控件,
可以将一些标准控件美化.
rosibo 2009-10-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 getemail 的回复:]
这里有一个,颜色好土
[/Quote]
嗯,挺好,至少也是个借鉴。
getemail 2009-10-22
  • 打赏
  • 举报
回复
rosibo 2009-10-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 getemail 的回复:]
ListView排序不好用,需要加代码不说,加了也不好用,再添加的时候就乱套了
并且没那个箭头
第二个图估计是人家用别的语言自带的,或二次开发的

引用 3 楼 aisac 的回复:
ListView本来就支持排序啊,没看出你那个有什么不同,楼主指的是颜色?这个颜色设置是系统设置的吧,貌似和ListView没啥必然关系。

[/Quote]
呵呵,第二个是我还只是画在PS上的。
getemail 2009-10-22
  • 打赏
  • 举报
回复
ListView排序不好用,需要加代码不说,加了也不好用,再添加的时候就乱套了
并且没那个箭头
第二个图估计是人家用别的语言自带的,或二次开发的

[Quote=引用 3 楼 aisac 的回复:]
ListView本来就支持排序啊,没看出你那个有什么不同,楼主指的是颜色?这个颜色设置是系统设置的吧,貌似和ListView没啥必然关系。
[/Quote]
rosibo 2009-10-22
  • 打赏
  • 举报
回复
是的,用API,取句柄,呵呵。
我第一次接触这种。
getemail 2009-10-22
  • 打赏
  • 举报
回复
那等老马回来吧,要用API
要不我帮你搜索搜索?

[Quote=引用 2 楼 rosibo 的回复:]
应该能改的,应该可以重绘的。
[/Quote]
神马都能聊 2009-10-22
  • 打赏
  • 举报
回复
ListView本来就支持排序啊,没看出你那个有什么不同,楼主指的是颜色?这个颜色设置是系统设置的吧,貌似和ListView没啥必然关系。
rosibo 2009-10-22
  • 打赏
  • 举报
回复
应该能改的,应该可以重绘的。
getemail 2009-10-22
  • 打赏
  • 举报
回复
改不了,谁让你用VB呢

[Quote=引用楼主 rosibo 的回复:]
关于重绘我第一次接触,一点也不懂,希望能得到帮助。

图1:


图2:


如何才能将图1的这种标准LISTVIEW的头重绘成图2这种样式?寻求详细教学,非常感谢。


[/Quote]

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧