Solved

Change listbox row thickness

Posted on 2013-01-25
6
407 Views
Last Modified: 2013-01-28
Is there a way to change the thickness of the lines that show in a listbox control?  I want to make them lighter.

Thanks.
0
Comment
Question by:esemmoc
6 Comments
 
LVL 13

Expert Comment

by:Naman Goel
ID: 38821887
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
 
LVL 12

Expert Comment

by:Mohamed Abowarda
ID: 38822094
0
 
LVL 10

Expert Comment

by:Monica P
ID: 38825888
try it out whether this inline css helps u

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

Open in new window

0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:esemmoc
ID: 38827827
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
 
LVL 13

Accepted Solution

by:
Naman Goel earned 350 total points
ID: 38827843
yeah, use DrawItem event to do whatever you want it is very simple GDI painting, you can achieve whatever you want.
0
 

Author Closing Comment

by:esemmoc
ID: 38827997
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

Featured Post

On Demand Webinar - Networking for the Cloud Era

This webinar discusses:
-Common barriers companies experience when moving to the cloud
-How SD-WAN changes the way we look at networks
-Best practices customers should employ moving forward with cloud migration
-What happens behind the scenes of SteelConnect’s one-click button

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The ECB site provides FX rates for major currencies since its inception in 1999 in the form of an XML feed. The files have the following format (reducted for brevity) (CODE) There are three files available HERE (http://www.ecb.europa.eu/stats/exch…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

679 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question