永发信息网

vb.net列表显示图标 文字前面一个图标

答案:2  悬赏:80  手机版
解决时间 2021-03-13 08:36
vb.net列表显示图标 文字前面一个图标
最佳答案
Public Class Form1
Private Imgfile As String
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ListBox1.DrawMode = DrawMode.OwnerDrawVariable
Imgfile = "X:\Users\......\Pictures\ssm.png"‘显示为listbox的每一行文字前面的图标文件,换一张你自己的图片。
End Sub
Private Sub ListBox1_DrawItem(sender As Object, e As DrawItemEventArgs) Handles ListBox1.DrawItem
e.DrawBackground()
Dim rect As Rectangle = New Rectangle(2, e.Bounds.Y + 2, e.Bounds.Height, e.Bounds.Height - 4)
e.Graphics.DrawImage(New Bitmap(Imgfile), rect)
e.Graphics.DrawString(sender.Items(e.Index), sender.Font, New SolidBrush(sender.ForeColor), _
New RectangleF(e.Bounds.X + rect.Width, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height))
e.DrawFocusRectangle()
End Sub
End Class追问图标不同呢,要循环吗?帮我写一下吧,list2为对应的图标文件地址追答Using itemimg As New Bitmap(ListBox2.Items(e.Index)) '第一张图片对应listbox第一行,第二张对应第二行......
e.Graphics.DrawImage(itemimg, rect)
End Using
Using solid As New SolidBrush(sender.ForeColor)
e.Graphics.DrawString(sender.Items(e.Index), sender.Font, solid, _
New RectangleF(e.Bounds.X + rect.Width, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height))
End Using
替换第一次回答中的drawimage和drawstring语句。
源图片要尽可能小,否则占用内存会很大,尤其是在项数多的情况下。追问谢谢你!竟然有人编写这么多代码给我,感动!我周六测试一下再采纳
全部回答
Public Class Form1
Private Imgfile As String
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
ListBox1.DrawMode = DrawMode.OwnerDrawVariable
Imgfile = "X:\Users\......\Pictures\ssm.png" '显示为listbox的每一行文字前面的图标文件,换一张你自己的图片。
End Sub
Private Sub ListBox1_DrawItem(ByVal sender As Object, ByVal e As DrawItemEventArgs) Handles ListBox1.DrawItem
e.DrawBackground()
Dim rect As Rectangle = New Rectangle(2, e.Bounds.Y + 2, e.Bounds.Height, e.Bounds.Height - 4)
Using itemimg As New Bitmap(ListBox2.Items(e.Index)) '第一张图片对应listbox第一行,第二张对应第二行......
e.Graphics.DrawImage(itemimg, rect)
End Using
Using solid As New SolidBrush(sender.ForeColor)
e.Graphics.DrawString(sender.Items(e.Index), sender.Font, solid, _
New RectangleF(e.Bounds.X + rect.Width, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height))
End Using
e.DrawFocusRectangle()
End Sub
End Class
不对,VB2005
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
阿克苏地区人民广播电台地址有知道的么?有点
叶浓庄园葡萄酒品鉴中心在什么地方啊,我要过
滑头鬼之孙羽衣狐好的还是坏的
江东花园西路这个地址在什么地方,我要处理点
二进制位数包括符号位吗?
西峡县人民医院第二社区卫生站怎么去啊,有知
谁有百合片,急需谢谢
手机数据问题
康味龙早餐店这个地址在什么地方,我要处理点
有没有人知道当年萨拉寇娜和他老公离婚后首台
味香居我想知道这个在什么地方
阜新广播电视台交通广播怎么去啊,有知道地址
伊丽梦家纺我想知道这个在什么地方
red velvet 2016年红吗
鸡心岭这个地址在什么地方,我要处理点事
推荐资讯
家兴家具在哪里啊,我有事要去这个地方
兴盛德食品城京西店地址在什么地方,想过去办
1至99的英文单词
寻找一个做pvc管师傅,工资面议。谢谢!
雅格丽白荣大购物广场店地址在哪,我要去那里
红南港少公馆-停车场在哪里啊,我有事要去这
以佛珠洞和窟窿窟窿山为主的山水画廊有多少公
ORA-01427: 单行子查询返回多于一个行,请问
已经卸载广联达g+但是在桌面回收站右键仍有“
财付通用户骗钱是不是可以举报。又怎么举报?
工商银行卡号查询6212262008023561377
陇东果业网发展中心果蔬保鲜技术服务部在什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?