Click here to Skip to main content
12,622,741 members (27,633 online)
Click here to Skip to main content
Add your own
alternative version


34 bookmarked

Vertical Label Control in VB.NET

, 3 Sep 2005 CPOL
Rate this:
Please Sign up or sign in to vote.
Create a custom vertical label user control in VB.NET.

Vertical Label


This article describes how to create a custom vertical label user control in VB.NET.


Create a new Windows user control. Change the inherited class from System.Windows.Forms.UserControl to System.Windows.Forms.Control. Add an icon file in the project to associate with the control and set its property to "EmbeddedResource" and add a class attribute <ToolboxBitmap(GetType(Name of Class), "Name of Icon file"). Delete:

components = New System.ComponentModel.Container()

line in the Windows designer generated code and add the default size of the label. For example:

Me.Size = New System.Drawing.Size(24, 100)

Override the OnPaint method and the Text property of the control. Build the control and add it to your toolbox.

Source Code

Imports System.ComponentModel

<ToolboxBitmap(GetType(VerticalLabel), "Varticallabel.ico")> _
Public Class VerticalLabel

    'Since we are not using the additional resources/capabilities of 
    'UserControl we will inherit from Control instead to save overhead
    'Inherits System.Windows.Forms.UserControl
    Inherits System.Windows.Forms.Control

    Private labelText As String
#Region " Windows Form Designer generated code "
    Public Sub New()
        'This call is required by the Windows Form Designer.
    End Sub

    'UserControl overrides dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
            End If
        End If
    End Sub

    'Required by the Windows Form Designer
    Private components As System.ComponentModel.Container

    'NOTE: The following procedure is required by the Windows Form Designer
    'It can be modified using the Windows Form Designer. 
    'Do not modify it using the code editor.
    <System.Diagnostics.DebuggerStepThrough()> _
    Private Sub InitializeComponent()
        Me.Size = New System.Drawing.Size(24, 100)
    End Sub
#End Region

    Protected Overrides Sub OnPaint(ByVal e As _
        Dim sngControlWidth As Single
        Dim sngControlHeight As Single
        Dim sngTransformX As Single
        Dim sngTransformY As Single
        Dim labelColor As Color
        Dim labelBorderPen As New Pen(labelColor, 0)
        Dim labelBackColorBrush As New SolidBrush(labelColor)
        Dim labelForeColorBrush As New SolidBrush(MyBase.ForeColor)
        sngControlWidth = Me.Size.Width
        sngControlHeight = Me.Size.Height
        e.Graphics.DrawRectangle(labelBorderPen, 0, 0, _
                   sngControlWidth, sngControlHeight)
        e.Graphics.FillRectangle(labelBackColorBrush, 0, _
                   0, sngControlWidth, sngControlHeight)
        ' set the translation point for the 
        ' graphics object - the new (0,0) location
        sngTransformX = 0
        sngTransformY = sngControlHeight
        ' translate the origin used for rotation and drawing 
        e.Graphics.TranslateTransform(sngTransformX, _
                            sngTransformY) ' (0, textwidth)
        'set the rotation angle for vertical text
        ' draw the text on the control
        e.Graphics.DrawString(labelText, Font, _
                   labelForeColorBrush, 0, 0)
    End Sub

    Private Sub VTextBox_Resize(ByVal sender As Object, _
            ByVal e As System.EventArgs) Handles MyBase.Resize
    End Sub

    <Category("Verticallabel"), _
    Description("Text is displayed vertiaclly in container")> _
    Public Overrides Property Text() As String
            Return labelText
        End Get
        Set(ByVal Value As String)
            labelText = Value
        End Set
    End Property
End Class


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Raman Tayal
Software Developer (Senior)
India India
No Biography provided

You may also be interested in...


Comments and Discussions

Generalinherits from a label [modified] Pin
scalpa9828-Oct-08 4:22
memberscalpa9828-Oct-08 4:22 
GeneralNeed properties for this code Pin
zephiruspt15-Sep-08 2:10
memberzephiruspt15-Sep-08 2:10 
GeneralRe: Need properties for this code Pin
Raman Tayal15-Sep-08 7:44
memberRaman Tayal15-Sep-08 7:44 
GeneralRe: Need properties for this code Pin
zephiruspt15-Sep-08 8:29
memberzephiruspt15-Sep-08 8:29 
GeneralRe: Need properties for this code Pin
pablleaf21-Apr-09 13:09
memberpablleaf21-Apr-09 13:09 
QuestionTransparent Background Pin
SourSW2-Jun-06 12:49
memberSourSW2-Jun-06 12:49 
AnswerRe: Transparent Background Pin
pablleaf24-Apr-09 9:15
memberpablleaf24-Apr-09 9:15 
GeneralThank you Pin
nonanon14-Oct-05 13:27
membernonanon14-Oct-05 13:27 
General&quot;Article&quot; is not the same as &quot;sourcecode&quot; Pin
mav.northwind4-Sep-05 1:43
membermav.northwind4-Sep-05 1:43 
GeneralRe: &quot;Article&quot; is not the same as &quot;sourcecode&quot; Pin
Raman Tayal4-Sep-05 3:11
memberRaman Tayal4-Sep-05 3:11 
GeneralRe: &quot;Article&quot; is not the same as &quot;sourcecode&quot; Pin
klaus@gubbernet.com12-Mar-07 9:33
memberklaus@gubbernet.com12-Mar-07 9:33 
GeneralRe: &quot;Article&quot; is not the same as &quot;sourcecode&quot; Pin
mav.northwind12-Mar-07 10:36
membermav.northwind12-Mar-07 10:36 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.161128.1 | Last Updated 4 Sep 2005
Article Copyright 2005 by Raman Tayal
Everything else Copyright © CodeProject, 1999-2016
Layout: fixed | fluid