Foxtable(狐表)用户栏目专家坐堂 → LISTVIEW平铺外框怎么做?


  共有2411人关注过本帖树形打印复制链接

主题:LISTVIEW平铺外框怎么做?

帅哥哟,离线,有人找我吗?
yangsion
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:114 积分:1628 威望:0 精华:0 注册:2013/6/11 19:13:00
LISTVIEW平铺外框怎么做?  发帖心情 Post By:2018/3/21 21:38:00 [只看该作者]

Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.StopRedraw() '暂停绘制
lvw.Rows.Clear() '清除原来的行
lvw.Images.Clear() '清除原来的图片
lvw.View = ViewMode.Tile '显示模式为平铺
lvw.Images.LargeSize = New Size(65,75) '定义大图标尺寸
lvw.TitleSize = New Size(150,90)  '设置平铺区域的大小 
Dim cls() As String = {"编号","姓名","部门","职务","性别"} '定义列名 
For i As Integer = 0 To  cls.Length - 1  '增加列 
    Dim c As WinForm.ListViewColumn = lvw.Columns.Add() 
    c.Name = cls(i) '指定列名 
Next
For Each dr As DataRow In DataTables("员工").DataRows '从数据表中提取数据 
    Dim Key As String = dr("照片") '获取此员工的照片文件
    lvw.Images.AddLargeImage(Key, Key) '添加照片,直接用文件名作为图片键值
    Dim vr As  WinForm.ListViewRow =  lvw.Rows.Add() '增加一行
    vr.ToolTipText = dr("备注")  '设置此行的动态提示
    vr.ImageKey = Key '设置图片键值
    For Each cl As String In cls '逐列取值
        vr(cl) = dr(cl)
    Next
Next
图片点击可在新窗口打开查看此主题相关图片如下:listiew-平铺线条外框.jpg
图片点击可在新窗口打开查看
lvw.ResumeRedraw() '恢复绘制


 回到顶部
帅哥哟,离线,有人找我吗?
yangsion
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:114 积分:1628 威望:0 精华:0 注册:2013/6/11 19:13:00
  发帖心情 Post By:2018/3/21 21:46:00 [只看该作者]

请问各位大神这个怎么编写?需要绘制线条,颜色是按某列来指定变化

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/21 22:34:00 [只看该作者]

全局代码

 

Public Sub listView1_DrawItem(ByVal sender As Object, ByVal e As Windows.forms.DrawListViewItemEventArgs)

Dim n As New Pen(Color.Red,2)
Dim rect As new Rectangle(e.Bounds.left-1, e.Bounds.top-1, e.Bounds.width-2, e.Bounds.height-2)
e.Graphics.DrawRectangle(n, e.Bounds)
e.Graphics.DrawImage(sender.LargeImageList(e.Item.ImageIndex), rect)

End Sub

 

生成代码

 

Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
Dim blvw As windows.Forms.Listview = lvw.basecontrol
blvw.OwnerDraw = True
addhandler blvw.DrawItem, addressof listView1_DrawItem


 回到顶部
帅哥哟,离线,有人找我吗?
yangsion
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:114 积分:1628 威望:0 精华:0 注册:2013/6/11 19:13:00
  发帖心情 Post By:2018/3/21 22:42:00 [只看该作者]

谢谢大神,但是这个颜色数固定红色的吗?比如我表A有一列为颜色,里面有不同的颜色,RED,YELLOW等等,可以定义进去吗?小白麻烦大神了

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/21 23:16:00 [只看该作者]

参考代码

 

Public Sub listView1_DrawItem(ByVal sender As Object, ByVal e As Windows.forms.DrawListViewItemEventArgs)

If e.item.SubItems("性别").text = "男" Then
    Dim n As New Pen(Color.Red,2)
    e.Graphics.DrawRectangle(n, e.Bounds)
Else
    Dim n As New Pen(Color.yellow,2)
    e.Graphics.DrawRectangle(n, e.Bounds)
End If
Dim rect As new Rectangle(e.Bounds.left-1, e.Bounds.top-1, e.Bounds.width-2, e.Bounds.height-2)
e.Graphics.DrawImage(sender.LargeImageList(e.Item.ImageIndex), rect)

End Sub


 回到顶部