Change listbox row thickness

Is there a way to change the thickness of the lines that show in a listbox control?  I want to make them lighter.

Thanks.
esemmocAsked:
Who is Participating?
 
Naman GoelConnect With a Mentor Software engineer 1Commented:
yeah, use DrawItem event to do whatever you want it is very simple GDI painting, you can achieve whatever you want.
0
 
Naman GoelSoftware engineer 1Commented:
You can use drawitem event for this, set DrawMode property to OwnerDrawFixed and handle DrawItem event.

using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        private ListBox listBox1;
    
        public Form1()
        {
            InitializeComponent();
        }

        private void InitializeComponent()
        {
            this.listBox1 = new System.Windows.Forms.ListBox();
            this.SuspendLayout();
            // 
            // listBox1
            // 
            this.listBox1.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
            this.listBox1.FormattingEnabled = true;
            this.listBox1.Items.AddRange(new object[] {
            "abcd",
            "XYZL",
            "LMNO",
            "IPQR"});
            this.listBox1.Location = new System.Drawing.Point(42, 12);
            this.listBox1.Name = "listBox1";
            this.listBox1.Size = new System.Drawing.Size(173, 199);
            this.listBox1.TabIndex = 0;
            this.listBox1.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.listBox1_DrawItem);
            // 
            // Form1
            // 
            this.ClientSize = new System.Drawing.Size(284, 262);
            this.Controls.Add(this.listBox1);
            this.Name = "Form1";
            this.ResumeLayout(false);

        }

        private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
        {
            e.DrawBackground();
            e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), listBox1.Font, new SolidBrush(listBox1.ForeColor), new Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Width -2 , e.Bounds.Height - 2));
            e.DrawFocusRectangle();
        }
    }
}

Open in new window

0
 
Mohamed AbowardaSoftware EngineerCommented:
0
Cloud Class® Course: Microsoft Office 2010

This course will introduce you to the interfaces and features of Microsoft Office 2010 Word, Excel, PowerPoint, Outlook, and Access. You will learn about the features that are shared between all products in the Office suite, as well as the new features that are product specific.

 
Monica PSoftware DeveloperCommented:
try it out whether this inline css helps u

<select style="width: 100px;"></select>

Open in new window

0
 
esemmocAuthor Commented:
I am using vb.net and tried the below solution but it doesn't seem to change the display.

by: Medo3337Posted on 2013-01-26 at 05:48:08ID: 38822094
Check out this link:
http://stackoverflow.com/questions/5663735/draw-listbox-item-properly-vb-net-2005

e.Graphics.DrawRectangle(myPen, e.Bounds.X, e.Bounds.Y, e.Bounds.Width-1,e.Bounds.Height)

My code:

e.Graphics.DrawRectangle(myPen, e.Bounds.X, e.Bounds.Y, e.Bounds.Width-1,e.Bounds.Height)

 e.Graphics.DrawString(lstShipping.Items(e.Index).ToString, txtfnt, txtBrush, R)

On further thought, is it possible to remove the lines completely, e.g. go from a "ruled" listbox to an "unruled" listbox?
0
 
esemmocAuthor Commented:
Great.  I used e.Graphics.DrawRectangle(Pens.LightGray, e.Bounds) to "soften" the lines displayed.   To completely remove the lines (an affect I tried but didn't like) just make the "Pens.xxxx" the same color as the color in the e.Graphics.FillRectangle statement.

Thanks.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.