Search code examples
c#winformslistboxalignment

How to make Listbox's texts center aligned in desktop application using c#.net


Please tell me how can I align center to my ListBox's text in desktop application.
I am using C#.Net in Visual Studio 2005.

I am using Windows forms.


Solution

  • You can set the DrawMode property of the ListBox to DrawMode.OwnerDrawFixed, which gives you control over the entire graphical representation of each item. For instance:

    ListBox listBox = new ListBox();
    listBox.DrawMode = DrawMode.OwnerDrawFixed;
    listBox.DrawItem += new DrawItemEventHandler(listBox_DrawItem);
    
        void listBox_DrawItem(object sender, DrawItemEventArgs e)
        {
            ListBox list = (ListBox)sender;
            if (e.Index > -1)
            {
                object item = list.Items[e.Index];
                e.DrawBackground();
                e.DrawFocusRectangle();
                Brush brush = new SolidBrush(e.ForeColor);
                SizeF size = e.Graphics.MeasureString(item.ToString(), e.Font);
                e.Graphics.DrawString(item.ToString(), e.Font, brush, e.Bounds.Left + (e.Bounds.Width / 2 - size.Width / 2), e.Bounds.Top + (e.Bounds.Height / 2 - size.Height / 2)); 
            }
        }