C#使用listbox左侧显示图片右侧显示文字

liutian1234567890 2015-06-13 11:07:51
C#使用listbox左侧显示图片右侧显示文字,就像qq多人聊天一样的效果,我将listbox重绘 private Color RowBackColorAlt = Color.FromArgb(185, 210, 234);//交替色
private Color RowBackColorSel = Color.FromArgb(106, 197, 242);//选中项目颜色
private void lbNN_DrawItem(object sender, DrawItemEventArgs e)
{
Brush myBrush = Brushes.Black;
if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
{
myBrush = new SolidBrush(RowBackColorSel);
}
else if (e.Index % 2 == 0)
{
myBrush = new SolidBrush(RowBackColorAlt);
}
else
{
myBrush = new SolidBrush(Color.White);
}
e.Graphics.FillRectangle(myBrush, e.Bounds);
e.DrawFocusRectangle();//焦点框

//绘制图表
Image image = Image.FromFile(@"..\..\ico\聊天界面头像2.png");
Graphics g = e.Graphics;
Rectangle bounds = e.Bounds;
Rectangle imageRect = new Rectangle(bounds.X, bounds.Y, bounds.Height, bounds.Width);
Rectangle textRect = new Rectangle(imageRect.Right, bounds.X,
bounds.Width - imageRect.Right, bounds.Height);

if (image != null)
{
g.DrawImage(image, imageRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel);
}

//文本
StringFormat strFormat = new StringFormat();
strFormat.LineAlignment = StringAlignment.Center;
e.Graphics.DrawString(lbNN.Items[e.Index].ToString(), e.Font, new SolidBrush(e.ForeColor), textRect, strFormat);
}以上是我的代码,可是我不知道怎么在窗体的load事件里写了,运行时没有反应,只有单击listbox的时候闪一下,请问大神怎么写才能实现,初来乍到还不懂什么,请问如何在窗体加载的时候就可以显示listbox的头像和昵称呢,
...全文
864 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lwq_net 2017-07-09
  • 打赏
  • 举报
回复
楼主怎么解决的?共享下吧
liutian1234567890 2015-06-15
  • 打赏
  • 举报
回复
引用 6 楼 liutian1234567890 的回复:
今天周一,大家都来上班了吗,有木有哪位大神可以帮我解决一下上面的问题啊???谢谢!!!
使用listview可以实现这种效果?对,好像是可以,恩,那listbox呢,应该也可以吧,……混乱,不知道该怎么整了!
於黾 2015-06-15
  • 打赏
  • 举报
回复
如果你遇到啥问题都首先想到重绘,早晚有累死的那一天
於黾 2015-06-15
  • 打赏
  • 举报
回复
不是有listview吗,为啥要自己重绘listbox
liutian1234567890 2015-06-15
  • 打赏
  • 举报
回复
今天周一,大家都来上班了吗,有木有哪位大神可以帮我解决一下上面的问题啊???谢谢!!!
liutian1234567890 2015-06-15
  • 打赏
  • 举报
回复
好吧,帖子彻底沉入大海,好在自己解决了!!!结贴!
liutian1234567890 2015-06-13
  • 打赏
  • 举报
回复
引用 2 楼 unearth 的回复:
用WinForm实现比较麻烦,用WPF,比较简单
初来乍到,不懂WPF,而且我目前只有一个思路就是将listbox重写
孤独de猫 2015-06-13
  • 打赏
  • 举报
回复
用WinForm实现比较麻烦,用WPF,比较简单
liutian1234567890 2015-06-13
  • 打赏
  • 举报
回复
难道是因为今天是周末人们都不上班,所以都看到我的帖子吗???
liutian1234567890 2015-06-13
  • 打赏
  • 举报
回复
这是帖子要沉了吗????

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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