C# Can I display images in a list box?

前端 未结 3 1155
再見小時候
再見小時候 2020-11-30 05:07

C# In a nut shell can I display images in a list box? I have a list of users and I want to display a green tick next to some of the names, is this possible?

Thanks<

相关标签:
3条回答
  • 2020-11-30 05:34

    The following code displays how to do custom drawing in a listbox.

    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));
            }
        }
    }
    
    0 讨论(0)
  • 2020-11-30 05:35

    In WPF it's quite simple, but if you're using winforms, you can't do it with the System.Windows.Forms.ListBox control. You can do it with the ListView control, or third party controls.

    0 讨论(0)
  • 2020-11-30 05:48

    System.Windows.Forms.ListView will do the trick very easily. You might have to work a little harder than a ListBox if you want the list in 'details' view though.

    0 讨论(0)
提交回复
热议问题