MSDN Documentation

Creating Custom Controls in VB.NET

Custom controls let you extend the functionality of the Windows Forms library by creating reusable components that encapsulate UI and behavior. This guide walks you through the process of building a custom control using Visual Basic.

Overview

There are three common approaches to custom control development:

Getting Started

Open Visual Studio, create a Class Library project, and add a new class that inherits from the base control you wish to extend.

Imports System.Windows.Forms
Imports System.ComponentModel

Public Class FancyButton
    Inherits Button

    ' Add a custom property
    Private _highlightColor As Color = Color.Yellow

    <Category("Appearance"), Description("Color used when the mouse hovers over the button.")>
    Public Property HighlightColor As Color
        Get
            Return _highlightColor
        End Get
        Set(value As Color)
            _highlightColor = value
            Invalidate()
        End Set
    End Property

    Protected Overrides Sub OnMouseEnter(e As EventArgs)
        MyBase.OnMouseEnter(e)
        BackColor = _highlightColor
    End Sub

    Protected Overrides Sub OnMouseLeave(e As EventArgs)
        MyBase.OnMouseLeave(e)
        BackColor = SystemColors.Control
    End Sub
End Class

Key Properties & Events

Member Description
HighlightColor Color displayed on hover.
OnMouseEnter / OnMouseLeave Override to implement custom hover behavior.

Using the Control

After building the class library, add a reference to the DLL in a Windows Forms project and drag the control onto a form, or instantiate it in code:

Dim btn As New FancyButton() With {
    .Text = "Click Me",
    .Location = New Point(20, 20),
    .HighlightColor = Color.LightGreen
}
Me.Controls.Add(btn)

Inheritance Diagram

Inheritance diagram for FancyButton