C# 我可以在列表框中显示图像吗?
Posted
技术标签:
【中文标题】C# 我可以在列表框中显示图像吗?【英文标题】:C# Can I display images in a list box? 【发布时间】:2010-10-03 03:23:03 【问题描述】:C# 简而言之,我可以在列表框中显示图像吗?我有一个用户列表,我想在某些名称旁边显示一个绿色勾号,这可能吗?
谢谢
【问题讨论】:
您使用的是 Winforms 还是 WPF? 史蒂夫,这篇文章可能会为您指明正确的方向:codeproject.com/KB/combobox/glistbox.aspx 我只想说我强烈建议不要使用该教程。它非常有缺陷,给读者留下了太多问题,而且代码也很糟糕。 【参考方案1】:在 WPF 中这很简单,但如果您使用的是 winforms,则无法使用 System.Windows.Forms.ListBox 控件来完成。您可以使用 ListView 控件或第三方控件来实现。
【讨论】:
【参考方案2】:System.Windows.Forms.ListView 将很容易做到这一点。如果您希望列表显示在“详细信息”视图中,您可能需要比 ListBox 更努力一些。
【讨论】:
【参考方案3】:以下代码显示了如何在列表框中进行自定义绘图。
using System.Windows.Forms;
using System.Drawing;
namespace Toolset.Controls
public class CustomDrawListBox : ListBox
public CustomDrawListBox()
this.DrawMode = DrawMode.OwnerDrawVariable; // We're using custom drawing.
this.ItemHeight = 40; // Set the item height to 40.
protected override void OnDrawItem(DrawItemEventArgs e)
// Make sure we're not trying to draw something that isn't there.
if (e.Index >= this.Items.Count || e.Index <= -1)
return;
// Get the item object.
object item = this.Items[e.Index];
if (item == null)
return;
// Draw the background color depending on
// if the item is selected or not.
if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
// The item is selected.
// We want a blue background color.
e.Graphics.FillRectangle(new SolidBrush(Color.Blue), e.Bounds);
else
// The item is NOT selected.
// We want a white background color.
e.Graphics.FillRectangle(new SolidBrush(Color.White), e.Bounds);
// Draw the item.
string text = item.ToString();
SizeF stringSize = e.Graphics.MeasureString(text, this.Font);
e.Graphics.DrawString(text, this.Font, new SolidBrush(Color.White),
new PointF(5, e.Bounds.Y + (e.Bounds.Height - stringSize.Height) / 2));
【讨论】:
以上是关于C# 我可以在列表框中显示图像吗?的主要内容,如果未能解决你的问题,请参考以下文章