|  |  | 
              
              | 
                  | Title | Make ListBox and TextBox extension methods that set tab stops in Visual Basic .NET | 
|---|
 | Description | This example shows how to make ListBox and TextBox extension methods that set tab stops in Visual Basic .NET. | 
|---|
 | Keywords | ListBox, TextBox, set tabs, tabs, tab stops, set tab stops, Visual Basic .NET, VB.NET | 
|---|
 | Categories | Controls, Controls, Software Engineering | 
|---|
 |  | 
 |  |   
This example uses the following code to define extension methods that set tab stops for ListBox and TextBox controls.
               |  | 
 |  
                | Imports System.Runtime.InteropServices
Imports System.Runtime.CompilerServices
Module ListBoxExtensions
    ' Set tab stops inside a ListBox.
    <Extension()> _
    Public Sub SetTabs(ByVal lst As ListBox, ByVal tabs As _
        IList(Of Integer))
        ' Make sure the control will use them.
        lst.UseTabStops = True
        lst.UseCustomTabOffsets = True
        ' Get the control's tab offset collection.
        Dim offsets As ListBox.IntegerCollection = _
            lst.CustomTabOffsets
        ' Define the tabs.
        For Each tab As Integer In tabs
            offsets.Add(tab)
        Next tab
    End Sub
    <DllImport("user32.dll", SetLastError:=True, _
        CharSet:=CharSet.Auto)> _
    Private Function SendMessage(ByVal hWnd As IntPtr, ByVal _
        Msg As UInteger, ByVal wParam As Integer, ByVal _
        lParam As Integer()) As IntPtr
    End Function
    Private Const EM_SETTABSTOPS As Integer = &HCB
    ' Set tab stops inside a TextBox.
    <Extension()> _
    Public Sub SetTabs(ByVal txt As TextBox, ByVal tabs As _
        Integer())
        SendMessage(txt.Handle, EM_SETTABSTOPS, tabs.Length, _
            tabs)
    End Sub
End Module |  | 
 |  | The main program uses the following code to set tab stops for a ListBox and a TextBox. |  | 
 |  
                | lstCars.SetTabs(New Integer() {120, 170, 220})
txtCars.SetTabs(New Integer() {120, 170, 220}) |  |  |  |  |  |  |  |  |  |  |  |  |  |  |