怎么修改listview的ColumnHeaders样式?
关于重绘我第一次接触,一点也不懂,希望能得到帮助。图1:
图2:
如何才能将图1的这种标准LISTVIEW的头重绘成图2这种样式?寻求详细教学,非常感谢。
--------------------编程问答-------------------- 改不了,谁让你用VB呢
--------------------编程问答-------------------- 应该能改的,应该可以重绘的。 --------------------编程问答-------------------- ListView本来就支持排序啊,没看出你那个有什么不同,楼主指的是颜色?这个颜色设置是系统设置的吧,貌似和ListView没啥必然关系。 --------------------编程问答-------------------- 那等老马回来吧,要用API
要不我帮你搜索搜索?
--------------------编程问答-------------------- 是的,用API,取句柄,呵呵。
我第一次接触这种。 --------------------编程问答-------------------- ListView排序不好用,需要加代码不说,加了也不好用,再添加的时候就乱套了
并且没那个箭头
第二个图估计是人家用别的语言自带的,或二次开发的
--------------------编程问答--------------------
呵呵,第二个是我还只是画在PS上的。 --------------------编程问答-------------------- 这里有一个,颜色好土 --------------------编程问答--------------------
嗯,挺好,至少也是个借鉴。 --------------------编程问答-------------------- 有一个winxpc什么什么控件,
可以将一些标准控件美化. --------------------编程问答-------------------- 关于颜色楼上的已经说明,我只补充那个列头小三角的问题,需要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 --------------------编程问答-------------------- 这个我想到了,但是我的程序中不会因为这么点效果动用那么多代码
这不是VB的根本
--------------------编程问答--------------------
没有好用不好用,看你会用不会用,我用得就没有问题 --------------------编程问答-------------------- 你排序后再追加数据条目试试
--------------------编程问答-------------------- 楼上,我认同 孤独剑
没有好不好用,就看会不会用
最笨的方法,你加完数据,再刷新一下排序都可以,也不至于向你说的,就乱套。 --------------------编程问答-------------------- 你加上9000条记录测试一下看看什么效果
--------------------编程问答-------------------- 你为什么不做分页,
再说你不做分页,也不做即时加载,9000条记录,你就是点一下排序都会半天。 --------------------编程问答-------------------- 因为我要模仿图2的程序
它的也没做什么分页
说大话谁都会,真做起来就不是那么回事了
--------------------编程问答-------------------- 排序时,自动在标题上增加一个标识符就可以。
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 --------------------编程问答-------------------- 用LVM_GETHEADER消息获取listview的HEADER控件窗口句柄,然后子类化,拦截WM_ERASEBKGRND\WM_PAINT消息重绘
补充:VB , 控件