A Simple Multiline Label Control UserPageVisits:321 active 80 80 DaniWeb 561 60 2010-12-14T04:09:54+00:00 https://www.daniweb.com/programming/software-development/code/331541/a-simple-multiline-label-control

A Simple Multiline Label Control


I needed a very simple multi-line label control for a project I was working on, It had very simple requirements. It needed to draw text in any font, in any color, on multiple lines with vertical and horizontal alignment control.

So I hacked up this little class. Just as easy to use as a standard label control.

__avd commented: Cool code. +11
ddanbe commented: Cool code indeed! +8
About the Author

amateur programmer, self taught with some experience in C#, Flash, VB.net, and java script.

code snippet
//DiamondDrake 2010 www.DiamondDrake.com
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Text;
using System.Windows.Forms;

namespace DiamondDrake.Controls
    public class LabelBox : Control
        public LabelBox()
            //Set up double buffering and a little extra.
            this.SetStyle(ControlStyles.UserPaint | ControlStyles.OptimizedDoubleBuffer |
            ControlStyles.AllPaintingInWmPaint | ControlStyles.SupportsTransparentBackColor,

            //set up some default values
            this.BackColor = Color.Transparent;
            _stringformat = new StringFormat();
            _stringformat.LineAlignment = StringAlignment.Near;
            _stringformat.Alignment = StringAlignment.Center;
            this.Font = new Font("Microsoft Sans Serif", 12F);

        private StringFormat _stringformat;

        public StringAlignment VerticalAlignment
            get { return _stringformat.LineAlignment; }
            set { _stringformat.LineAlignment = value; this.Invalidate(); }
        public StringAlignment HorizontalAlignment
            get { return _stringformat.Alignment; }
            set { _stringformat.Alignment = value; this.Invalidate(); }

        protected override void OnPaint(PaintEventArgs e)

            e.Graphics.DrawString(this.Text, this.Font, new SolidBrush(this.ForeColor), this.ClientRectangle, _stringformat);