VB.Net/GUI/ListBox

Материал из VB Эксперт
Перейти к: навигация, поиск

Add Item to a List Box by clicking a Button

<source lang="vbnet"> Imports System Imports System.Windows.Forms Public Class MainClass

 Shared Sub Main()
    Dim form1 As Form1 = new Form1
    Application.Run(form1)
 End Sub
 

End Class Public Class Form1

 Inherits System.Windows.Forms.Form
  1. Region " Windows Form Designer generated code "
 Public Sub New()
   MyBase.New()
   "This call is required by the Windows Form Designer.
   InitializeComponent()
   "Add any initialization after the InitializeComponent() call
 End Sub
 "Form 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
       components.Dispose()
     End If
   End If
   MyBase.Dispose(disposing)
 End Sub
 Friend WithEvents Button1 As System.Windows.Forms.Button
 Friend WithEvents ListBox1 As System.Windows.Forms.ListBox
 "Required by the Windows Form Designer
 Private components As System.ruponentModel.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.Button1 = New System.Windows.Forms.Button()
   Me.ListBox1 = New System.Windows.Forms.ListBox()
   Me.SuspendLayout()
   "
   "Button1
   "
   Me.Button1.Location = New System.Drawing.Point(32, 328)
   Me.Button1.Name = "Button1"
   Me.Button1.Size = New System.Drawing.Size(280, 32)
   Me.Button1.TabIndex = 0
   Me.Button1.Text = "Show hidden files"
   "
   "ListBox1
   "
   Me.ListBox1.HorizontalScrollbar = True
   Me.ListBox1.ItemHeight = 16
   Me.ListBox1.Location = New System.Drawing.Point(24, 56)
   Me.ListBox1.Name = "ListBox1"
   Me.ListBox1.ScrollAlwaysVisible = True
   Me.ListBox1.Size = New System.Drawing.Size(280, 244)
   Me.ListBox1.TabIndex = 1
   "
   "Form1
   "
   Me.AutoScaleBaseSize = New System.Drawing.Size(6, 15)
   Me.ClientSize = New System.Drawing.Size(328, 384)
   Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.ListBox1, Me.Button1})
   Me.Name = "Form1"
   Me.Text = "Add to List Box"
   Me.ResumeLayout(False)
 End Sub
  1. End Region
 Private Sub Button1_Click(ByVal sender As System.Object, _
   ByVal e As System.EventArgs) Handles Button1.Click
   Me.Cursor = System.Windows.Forms.Cursors.WaitCursor
   ListBox1.Items.Clear()
   ListBox1.Items.Add("Item A")
   Me.Cursor = System.Windows.Forms.Cursors.Default
 End Sub

End Class


 </source>


Add Item to ListBox

<source lang="vbnet"> Imports System Imports System.Drawing Imports System.Data Imports System.IO Imports System.Collections Imports System.Windows.Forms Imports System.Xml Public Class MainClass

   Shared Sub Main()
      Dim form1 As Form = New Form1()
      Application.Run(form1)    
   End Sub

End Class

Public Class Form1

   Inherits System.Windows.Forms.Form
  1. Region " Windows Form Designer generated code "
   Public Sub New()
       MyBase.New()
       "This call is required by the Windows Form Designer.
       InitializeComponent()
       "Add any initialization after the InitializeComponent() call
   End Sub
   "Form 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
               components.Dispose()
           End If
       End If
       MyBase.Dispose(disposing)
   End Sub
   "Required by the Windows Form Designer
   Private components As System.ruponentModel.IContainer
   "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.
   Friend WithEvents lstEmails As System.Windows.Forms.ListBox
   <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
       Me.lstEmails = New System.Windows.Forms.ListBox()
       Me.SuspendLayout()
       "
       "lstEmails
       "
       Me.lstEmails.IntegralHeight = False
       Me.lstEmails.Location = New System.Drawing.Point(16, 16)
       Me.lstEmails.Name = "lstEmails"
       Me.lstEmails.Size = New System.Drawing.Size(264, 224)
       Me.lstEmails.TabIndex = 0
       "
       "Form1
       "
       Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
       Me.ClientSize = New System.Drawing.Size(292, 253)
       Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.lstEmails})
       Me.Name = "Form1"
       Me.Text = "Form1"
       Me.ResumeLayout(False)
   End Sub
  1. End Region
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        lstEmails.Items.Add("a")
   End Sub

End Class


 </source>


Add, remove and clear list box items

<source lang="vbnet"> Imports System Imports System.Drawing Imports System.Windows.Forms Public Class MainClass

  Shared Sub Main()
       Dim myform As Form = New FrmListBox()
       Application.Run(myform)
  End Sub " Main

End Class Public Class FrmListBox

  Inherits Form
  1. Region " Windows Form Designer generated code "
  Public Sub New()
     MyBase.New()
     "This call is required by the Windows Form Designer.
     InitializeComponent()
     "Add any initialization after the InitializeComponent() call
  End Sub
  "Form 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
           components.Dispose()
        End If
     End If
     MyBase.Dispose(disposing)
  End Sub
  " contains user-input list of elements
  Friend WithEvents lstDisplay As ListBox
  " user input textbox
  Friend WithEvents txtInput As TextBox
  " add, remove, clear and exit command buttons
  Friend WithEvents cmdAdd As Button
  Friend WithEvents cmdRemove As Button
  Friend WithEvents cmdClear As Button
  "Required by the Windows Form Designer
  Private components As System.ruponentModel.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.cmdClear = New System.Windows.Forms.Button()
     Me.cmdAdd = New System.Windows.Forms.Button()
     Me.txtInput = New System.Windows.Forms.TextBox()
     Me.cmdRemove = New System.Windows.Forms.Button()
     Me.lstDisplay = New System.Windows.Forms.ListBox()
     Me.SuspendLayout()
     "
     "cmdClear
     "
     Me.cmdClear.Location = New System.Drawing.Point(160, 144)
     Me.cmdClear.Name = "cmdClear"
     Me.cmdClear.Size = New System.Drawing.Size(104, 40)
     Me.cmdClear.TabIndex = 4
     Me.cmdClear.Text = "Clear"
     "
     "cmdAdd
     "
     Me.cmdAdd.Location = New System.Drawing.Point(160, 48)
     Me.cmdAdd.Name = "cmdAdd"
     Me.cmdAdd.Size = New System.Drawing.Size(104, 40)
     Me.cmdAdd.TabIndex = 2
     Me.cmdAdd.Text = "Add"
     "
     "txtInput
     "
     Me.txtInput.Location = New System.Drawing.Point(160, 8)
     Me.txtInput.Name = "txtInput"
     Me.txtInput.Size = New System.Drawing.Size(104, 20)
     Me.txtInput.TabIndex = 1
     Me.txtInput.Text = ""
     "
     "cmdRemove
     "
     Me.cmdRemove.Location = New System.Drawing.Point(160, 96)
     Me.cmdRemove.Name = "cmdRemove"
     Me.cmdRemove.Size = New System.Drawing.Size(104, 40)
     Me.cmdRemove.TabIndex = 3
     Me.cmdRemove.Text = "Remove"
     "
     "lstDisplay
     "
     Me.lstDisplay.Location = New System.Drawing.Point(16, 8)
     Me.lstDisplay.Name = "lstDisplay"
     Me.lstDisplay.Size = New System.Drawing.Size(120, 238)
     Me.lstDisplay.TabIndex = 0
     "
     "FrmListBox
     "
     Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
     Me.ClientSize = New System.Drawing.Size(292, 273)
     Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.cmdClear, Me.cmdRemove, Me.cmdAdd, Me.txtInput, Me.lstDisplay})
     Me.Name = "FrmListBox"
     Me.Text = "ListBoxTest"
     Me.ResumeLayout(False)
  End Sub
  1. End Region
  Private Sub cmdAdd_Click(ByVal sender As System.Object, _
     ByVal e As System.EventArgs) Handles cmdAdd.Click
     lstDisplay.Items.Add(txtInput.Text)
     txtInput.Text = ""
  End Sub
  Private Sub cmdRemove_Click(ByVal sender As System.Object, _
     ByVal e As System.EventArgs) Handles cmdRemove.Click
     If lstDisplay.SelectedIndex <> -1 Then
        lstDisplay.Items.RemoveAt(lstDisplay.SelectedIndex)
     End If
  End Sub
  Private Sub cmdClear_Click(ByVal sender As System.Object, _
     ByVal e As System.EventArgs) Handles cmdClear.Click
     lstDisplay.Items.Clear()
  End Sub " cmdClear_Click

End Class


 </source>


Customize ListBox Font and Item Height

<source lang="vbnet"> Imports System Imports System.ruponentModel Imports System.Windows.Forms Imports System.Data Imports System.Configuration Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Drawing.Text Public Class MainClass

   Shared Sub Main()
       
       Dim myform As Form = New OwnerDrawnVariableListBox()
       Application.Run(myform)
   End Sub

End Class

Public Class OwnerDrawnVariableListBox

   Inherits System.Windows.Forms.Form
  1. Region " Windows Form Designer generated code "
   Public Sub New()
       MyBase.New()
       "This call is required by the Windows Form Designer.
       InitializeComponent()
       "Add any initialization after the InitializeComponent() call
   End Sub
   "Form 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
               components.Dispose()
           End If
       End If
       MyBase.Dispose(disposing)
   End Sub
   "Required by the Windows Form Designer
   Private components As System.ruponentModel.IContainer
   "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.
   Friend WithEvents listBox2 As System.Windows.Forms.ListBox
   <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
       Me.listBox2 = New System.Windows.Forms.ListBox()
       Me.SuspendLayout()
       "
       "listBox2
       "
       Me.listBox2.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable
       Me.listBox2.Items.AddRange(New Object() {"A", "B", "C"})
       Me.listBox2.Location = New System.Drawing.Point(6, 37)
       Me.listBox2.Name = "listBox2"
       Me.listBox2.Size = New System.Drawing.Size(280, 192)
       Me.listBox2.TabIndex = 5
       "
       "OwnerDrawnVariableListBox
       "
       Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
       Me.ClientSize = New System.Drawing.Size(292, 266)
       Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.listBox2})
       Me.Name = "OwnerDrawnVariableListBox"
       Me.Text = "OwnerDrawnVariableListBox"
       Me.ResumeLayout(False)
   End Sub
  1. End Region
   Private Sub listBox2_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles listBox2.DrawItem
       e.DrawBackground()
       Dim textFont As Font
       If e.Index Mod 2 = 0 Then
           textFont = New Font(e.Font.FontFamily, e.Font.Size * 2)
       Else
           textFont = e.Font
       End If
       e.Graphics.DrawString(listBox2.Items(e.Index).ToString(), textFont, New SolidBrush(e.ForeColor), RectangleF.op_Implicit(e.Bounds))
       e.DrawFocusRectangle()
   End Sub
   Private Sub listBox2_MeasureItem(ByVal sender As Object, ByVal e As System.Windows.Forms.MeasureItemEventArgs) Handles listBox2.MeasureItem
       If e.Index Mod 2 = 0 Then
           e.ItemHeight = e.ItemHeight * 2
       End If
   End Sub

End Class


 </source>


Drag and drop between two ListBox

<source lang="vbnet"> Imports System.Drawing.Drawing2D Imports System Imports System.Drawing.Text Imports System.Drawing Imports System.Windows.Forms Imports System.Math Public Class MainClass

  Shared Sub Main()
      Dim form1 As Form = New Form1()
      Application.Run(form1)
  End Sub 

End Class Public Class Form1

   Private m_DragSource As ListBox = Nothing
   Private Sub Form1_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
       lstUnselected.AllowDrop = True
       lstSelected.AllowDrop = True
       " Add event handlers.
       AddHandler lstUnselected.MouseDown, AddressOf List_MouseDown
       AddHandler lstUnselected.DragOver, AddressOf List_DragOver
       AddHandler lstUnselected.DragDrop, AddressOf List_DragDrop
       AddHandler lstUnselected.DragLeave, AddressOf List_DragLeave
       AddHandler lstSelected.MouseDown, AddressOf List_MouseDown
       AddHandler lstSelected.DragOver, AddressOf List_DragOver
       AddHandler lstSelected.DragDrop, AddressOf List_DragDrop
       AddHandler lstSelected.DragLeave, AddressOf List_DragLeave
   End Sub
   Private Sub List_MouseDown(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.MouseEventArgs)
       " Select the item at this point.
       Dim this_list As ListBox = DirectCast(sender, ListBox)
       this_list.SelectedIndex = this_list.IndexFromPoint(e.X, e.Y)
       If this_list.SelectedIndex < 0 Then Exit Sub
       m_DragSource = this_list
       this_list.DoDragDrop( _
           this_list.SelectedItem.ToString, _
           DragDropEffects.Move)
       m_DragSource = Nothing
   End Sub
   " Highlight the item under the mouse.
   Private Sub List_DragOver(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.DragEventArgs)
       If m_DragSource Is Nothing Then Exit Sub
       e.Effect = DragDropEffects.Move
       Dim this_list As ListBox = DirectCast(sender, ListBox)
       Dim pt As Point = _
           this_list.PointToClient(New Point(e.X, e.Y))
       Dim drop_index As Integer = _
           this_list.IndexFromPoint(pt.X, pt.Y)
       this_list.SelectedIndex = drop_index
   End Sub
   Private Sub List_DragLeave(ByVal sender As Object, ByVal e As System.EventArgs)
       Dim this_list As ListBox = DirectCast(sender, ListBox)
       this_list.SelectedIndex = -1
   End Sub
   " Accept the drop.
   Private Sub List_DragDrop(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.DragEventArgs)
       Dim this_list As ListBox = DirectCast(sender, ListBox)
       MoveItem(e.Data.GetData(DataFormats.Text).ToString, _
           m_DragSource, this_list, e.X, e.Y)
   End Sub
   " Move the value txt from drag_source to drop_target.
   Private Sub MoveItem(ByVal txt As String, ByVal drag_source As ListBox, _
    ByVal drop_target As ListBox, ByVal X As Integer, ByVal Y As Integer)
       Dim drop_index As Integer = drop_target.SelectedIndex
       If drop_index < 0 Then
           drop_index = drop_target.Items.Add(txt)
       Else
           drop_target.Items.Insert(drop_target.SelectedIndex, txt)
       End If
       drop_target.SelectedIndex = drop_index
       If drag_source Is drop_target Then
           Dim target_index As Integer = drag_source.FindStringExact(txt)
           If target_index = drop_index Then _
               target_index = drag_source.FindStringExact(txt, target_index)
           drag_source.Items.RemoveAt(target_index)
       Else
           drag_source.Items.Remove(txt)
       End If
   End Sub

End Class

<Global.Microsoft.VisualBasic.rupilerServices.DesignerGenerated()> _ Partial Public Class Form1

   Inherits System.Windows.Forms.Form
   "Form overrides dispose to clean up the component list.
   <System.Diagnostics.DebuggerNonUserCode()> _
   Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
       If disposing AndAlso components IsNot Nothing Then
           components.Dispose()
       End If
       MyBase.Dispose(disposing)
   End Sub
   "Required by the Windows Form Designer
   Private components As System.ruponentModel.IContainer
   "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.Label2 = New System.Windows.Forms.Label
       Me.Label1 = New System.Windows.Forms.Label
       Me.lstSelected = New System.Windows.Forms.ListBox
       Me.lstUnselected = New System.Windows.Forms.ListBox
       Me.SuspendLayout()
       "
       "Label2
       "
       Me.Label2.Location = New System.Drawing.Point(152, 0)
       Me.Label2.Name = "Label2"
       Me.Label2.Size = New System.Drawing.Size(144, 16)
       Me.Label2.TabIndex = 11
       Me.Label2.Text = "Right"
       Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
       "
       "Label1
       "
       Me.Label1.Location = New System.Drawing.Point(0, 0)
       Me.Label1.Name = "Label1"
       Me.Label1.Size = New System.Drawing.Size(144, 16)
       Me.Label1.TabIndex = 10
       Me.Label1.Text = "Left"
       Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
       "
       "lstSelected
       "
       Me.lstSelected.FormattingEnabled = True
       Me.lstSelected.Items.AddRange(New Object() {"1", "2", "3", "4", "5", "6", "7", "8"})
       Me.lstSelected.Location = New System.Drawing.Point(152, 16)
       Me.lstSelected.Name = "lstSelected"
       Me.lstSelected.Size = New System.Drawing.Size(144, 264)
       Me.lstSelected.TabIndex = 9
       "
       "lstUnselected
       "
       Me.lstUnselected.FormattingEnabled = True
       Me.lstUnselected.Items.AddRange(New Object() {"A", "B", "C", "D", "E", "F", "G", "H"})
       Me.lstUnselected.Location = New System.Drawing.Point(0, 16)
       Me.lstUnselected.Name = "lstUnselected"
       Me.lstUnselected.Size = New System.Drawing.Size(144, 264)
       Me.lstUnselected.TabIndex = 8
       "
       "Form1
       "
       Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
       Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
       Me.ClientSize = New System.Drawing.Size(297, 281)
       Me.Controls.Add(Me.Label2)
       Me.Controls.Add(Me.Label1)
       Me.Controls.Add(Me.lstSelected)
       Me.Controls.Add(Me.lstUnselected)
       Me.Name = "Form1"
       Me.Text = "DragBetweenListBoxes"
       Me.ResumeLayout(False)
   End Sub
   Friend WithEvents Label2 As System.Windows.Forms.Label
   Friend WithEvents Label1 As System.Windows.Forms.Label
   Friend WithEvents lstSelected As System.Windows.Forms.ListBox
   Friend WithEvents lstUnselected As System.Windows.Forms.ListBox

End Class


 </source>


Draw selected Item in ListBox

<source lang="vbnet"> Imports System Imports System.Drawing Imports System.Windows.Forms

Public Class MainClass

  Public Shared Sub Main()
        Application.Run(New OwnerDrawnFixedListBox())
  End Sub
  
  

End Class Public Class OwnerDrawnFixedListBox

   Inherits System.Windows.Forms.Form
  1. Region " Windows Form Designer generated code "
   Public Sub New()
       MyBase.New()
       "This call is required by the Windows Form Designer.
       InitializeComponent()
       "Add any initialization after the InitializeComponent() call
   End Sub
   "Form 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
               components.Dispose()
           End If
       End If
       MyBase.Dispose(disposing)
   End Sub
   "Required by the Windows Form Designer
   Private components As System.ruponentModel.IContainer
   "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.
   Friend WithEvents listBox1 As System.Windows.Forms.ListBox
   <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
       Me.listBox1 = New System.Windows.Forms.ListBox()
       Me.SuspendLayout()
       "
       "listBox1
       "
       Me.listBox1.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed
       Me.listBox1.Font = New System.Drawing.Font("Microsoft Sans Serif", 11.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
       Me.listBox1.ItemHeight = 18
       Me.listBox1.Items.AddRange(New Object() {"A", "B", "C"})
       Me.listBox1.Location = New System.Drawing.Point(8, 16)
       Me.listBox1.Name = "listBox1"
       Me.listBox1.Size = New System.Drawing.Size(248, 166)
       Me.listBox1.TabIndex = 3
       "
       "OwnerDrawnFixedListBox
       "
       Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
       Me.ClientSize = New System.Drawing.Size(264, 198)
       Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.listBox1})
       Me.Name = "OwnerDrawnFixedListBox"
       Me.Text = "OwnerDrawnFixedListBox"
       Me.ResumeLayout(False)
   End Sub
  1. End Region
   Private Sub listBox1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles listBox1.DrawItem
       e.DrawBackground()
       Dim drawFont As Font = Nothing
       If e.State And DrawItemState.Selected = DrawItemState.Selected Then
           drawFont = New Font("Times New Roman", 14, FontStyle.Bold Or FontStyle.Italic)
       Else
           drawFont = e.Font
       End If
       e.Graphics.DrawString(listBox1.Items(e.Index).ToString(), _
                               drawFont, _
                               New SolidBrush(e.ForeColor), e.Bounds.X, e.Bounds.Y)
       e.DrawFocusRectangle()
   End Sub

End Class


 </source>


Enum Binding

<source lang="vbnet"> Imports System.Windows.Forms Public Class Form1

   Inherits System.Windows.Forms.Form
   Public Sub New()
       MyBase.New()
       InitializeComponent()
   End Sub
   Friend WithEvents Button1 As System.Windows.Forms.Button
   Friend WithEvents ListBox1 As System.Windows.Forms.ListBox
   Friend WithEvents Button2 As System.Windows.Forms.Button
   <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
       Me.Button1 = New System.Windows.Forms.Button()
       Me.ListBox1 = New System.Windows.Forms.ListBox()
       Me.Button2 = New System.Windows.Forms.Button()
       Me.SuspendLayout()
       "
       Me.Button1.Location = New System.Drawing.Point(104, 24)
       Me.Button1.Size = New System.Drawing.Size(184, 24)
       Me.Button1.Text = "Bind to Enum"
       "
       Me.ListBox1.Location = New System.Drawing.Point(104, 112)
       Me.ListBox1.Size = New System.Drawing.Size(184, 82)
       "
       Me.Button2.Location = New System.Drawing.Point(104, 64)
       Me.Button2.Size = New System.Drawing.Size(184, 24)
       Me.Button2.Text = "Display Value of Selected"
       "
       Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
       Me.ClientSize = New System.Drawing.Size(392, 246)
       Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.Button2, Me.ListBox1, Me.Button1})
       Me.ResumeLayout(False)
   End Sub
   Public Enum Test
       A = 1
       B = 2
       C = 3
   End Enum
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       ListBox1.DataSource = System.Enum.GetNames(GetType(Test))
   End Sub
   Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
       Dim strNames As Array = System.Enum.GetValues(GetType(Test))
       Dim strValue As String = strNames(ListBox1.SelectedIndex)
       MessageBox.Show(strValue)
   End Sub

End Class


 </source>


Get Selected Item from ListBox

<source lang="vbnet"> Imports System.Windows.Forms Imports System.Drawing Imports System.IO

Module Module1

   Sub Main()
       Application.Run(New Form1)
   End Sub

End Module


Public Class Form1

   Inherits System.Windows.Forms.Form
  1. Region " Windows Form Designer generated code "
   Public Sub New()
       MyBase.New()
       "This call is required by the Windows Form Designer.
       InitializeComponent()
       "Add any initialization after the InitializeComponent() call
   End Sub
   "Form 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
               components.Dispose()
           End If
       End If
       MyBase.Dispose(disposing)
   End Sub
   "Required by the Windows Form Designer
   Private components As System.ruponentModel.IContainer
   "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.
   Friend WithEvents ListBox1 As System.Windows.Forms.ListBox
   Friend WithEvents Button1 As System.Windows.Forms.Button
   <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
       Me.ListBox1 = New System.Windows.Forms.ListBox()
       Me.Button1 = New System.Windows.Forms.Button()
       Me.SuspendLayout()
       "
       "ListBox1
       "
       Me.ListBox1.Items.AddRange(New Object() {"Windows", "Linux", "Mac OS", "Palm OS", "Windows CE", "Unix"})
       Me.ListBox1.Location = New System.Drawing.Point(32, 32)
       Me.ListBox1.Name = "ListBox1"
       Me.ListBox1.Size = New System.Drawing.Size(120, 69)
       Me.ListBox1.TabIndex = 0
       "
       "Button1
       "
       Me.Button1.Location = New System.Drawing.Point(104, 144)
       Me.Button1.Name = "Button1"
       Me.Button1.TabIndex = 1
       Me.Button1.Text = "Done"
       "
       "Form1
       "
       Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
       Me.ClientSize = New System.Drawing.Size(280, 205)
       Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.Button1, Me.ListBox1})
       Me.Name = "Form1"
       Me.Text = "ListBoxDemo"
       Me.ResumeLayout(False)
   End Sub
  1. End Region
   Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
       If (ListBox1.SelectedItem <> "") Then
           MessageBox.Show("You selected: " & ListBox1.SelectedItem)
       Else
           MessageBox.Show("You must select an item")
       End If
   End Sub

End Class


 </source>


Owner Draw ListBox

<source lang="vbnet"> Imports System Imports System.Drawing Imports System.Windows.Forms

Public Class MainClass

  Public Shared Sub Main()
        Application.Run(New OwnerDrawnVariableListBox())
  End Sub
  
  

End Class Public Class OwnerDrawnVariableListBox

   Inherits System.Windows.Forms.Form
  1. Region " Windows Form Designer generated code "
   Public Sub New()
       MyBase.New()
       "This call is required by the Windows Form Designer.
       InitializeComponent()
       "Add any initialization after the InitializeComponent() call
   End Sub
   "Form 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
               components.Dispose()
           End If
       End If
       MyBase.Dispose(disposing)
   End Sub
   "Required by the Windows Form Designer
   Private components As System.ruponentModel.IContainer
   "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.
   Friend WithEvents listBox2 As System.Windows.Forms.ListBox
   <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
       Me.listBox2 = New System.Windows.Forms.ListBox()
       Me.SuspendLayout()
       "
       "listBox2
       "
       Me.listBox2.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable
       Me.listBox2.Items.AddRange(New Object() {"A", "a", "B"})
       Me.listBox2.Location = New System.Drawing.Point(6, 15)
       Me.listBox2.Name = "listBox2"
       Me.listBox2.Size = New System.Drawing.Size(280, 192)
       Me.listBox2.TabIndex = 5
       "
       "OwnerDrawnVariableListBox
       "
       Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
       Me.ClientSize = New System.Drawing.Size(292, 222)
       Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.listBox2})
       Me.Name = "OwnerDrawnVariableListBox"
       Me.Text = "OwnerDrawnVariableListBox"
       Me.ResumeLayout(False)
   End Sub
  1. End Region
   Private Sub listBox2_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles listBox2.DrawItem
       e.DrawBackground()
       Dim textFont As Font
       textFont = New Font(e.Font.FontFamily, e.Font.Size * 2)
       e.Graphics.DrawString(listBox2.Items(e.Index).ToString(), _
                               textFont, _
                               New SolidBrush(e.ForeColor), _
                               e.Bounds.X, e.Bounds.Y)
       e.DrawFocusRectangle()
   End Sub
   Private Sub listBox2_MeasureItem(ByVal sender As Object, ByVal e As System.Windows.Forms.MeasureItemEventArgs) Handles listBox2.MeasureItem
       If e.Index Mod 2 = 0 Then e.ItemHeight *= 2
   End Sub

End Class


 </source>


Set ListBox TopIndex

<source lang="vbnet"> Imports System Imports System.Windows.Forms

Public Class MainClass

   Shared Sub Main()
       Dim form1 As Form = New Form1
       Application.Run(form1)
   End Sub

End Class Public Class Form1

   Inherits System.Windows.Forms.Form
  1. Region " Windows Form Designer generated code "
   Public Sub New()
       MyBase.New()
       "This call is required by the Windows Form Designer.
       InitializeComponent()
       "Add any initialization after the InitializeComponent() call
   End Sub
   "Form 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
               components.Dispose()
           End If
       End If
       MyBase.Dispose(disposing)
   End Sub
   Friend WithEvents Label1 As System.Windows.Forms.Label
   Friend WithEvents Label2 As System.Windows.Forms.Label
   Friend WithEvents txt As System.Windows.Forms.TextBox
   Friend WithEvents pic As System.Windows.Forms.PictureBox
   Friend WithEvents lstLog As System.Windows.Forms.ListBox
   Friend WithEvents cmd As System.Windows.Forms.Button
   Friend WithEvents Label3 As System.Windows.Forms.Label
   "Required by the Windows Form Designer
   Private components As System.ruponentModel.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.
   Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox
   Friend WithEvents Label4 As System.Windows.Forms.Label
   <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
       Me.txt = New System.Windows.Forms.TextBox()
       Me.Label1 = New System.Windows.Forms.Label()
       Me.Label2 = New System.Windows.Forms.Label()
       Me.lstLog = New System.Windows.Forms.ListBox()
       Me.pic = New System.Windows.Forms.PictureBox()
       Me.cmd = New System.Windows.Forms.Button()
       Me.Label3 = New System.Windows.Forms.Label()
       Me.GroupBox1 = New System.Windows.Forms.GroupBox()
       Me.Label4 = New System.Windows.Forms.Label()
       Me.GroupBox1.SuspendLayout()
       Me.SuspendLayout()
       "
       "txt
       "
       Me.txt.Location = New System.Drawing.Point(156, 20)
       Me.txt.Name = "txt"
       Me.txt.Size = New System.Drawing.Size(192, 21)
       Me.txt.TabIndex = 1
       Me.txt.Text = ""
       "
       "Label1
       "
       Me.Label1.Location = New System.Drawing.Point(6, 24)
       Me.Label1.Name = "Label1"
       Me.Label1.Size = New System.Drawing.Size(144, 16)
       Me.Label1.TabIndex = 2
       Me.Label1.Text = "Test keyboard events here:"
       "
       "Label2
       "
       Me.Label2.Location = New System.Drawing.Point(20, 52)
       Me.Label2.Name = "Label2"
       Me.Label2.Size = New System.Drawing.Size(128, 16)
       Me.Label2.TabIndex = 2
       Me.Label2.Text = "Test mouse events here:"
       "
       "lstLog
       "
       Me.lstLog.Anchor = (((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
                   Or System.Windows.Forms.AnchorStyles.Left) _
                   Or System.Windows.Forms.AnchorStyles.Right)
       Me.lstLog.IntegralHeight = False
       Me.lstLog.Location = New System.Drawing.Point(8, 160)
       Me.lstLog.Name = "lstLog"
       Me.lstLog.Size = New System.Drawing.Size(384, 212)
       Me.lstLog.TabIndex = 0
       "
       "pic
       "
       Me.pic.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D
       Me.pic.Location = New System.Drawing.Point(156, 48)
       Me.pic.Name = "pic"
       Me.pic.Size = New System.Drawing.Size(192, 48)
       Me.pic.TabIndex = 3
       Me.pic.TabStop = False
       "
       "cmd
       "
       Me.cmd.FlatStyle = System.Windows.Forms.FlatStyle.System
       Me.cmd.Location = New System.Drawing.Point(156, 100)
       Me.cmd.Name = "cmd"
       Me.cmd.Size = New System.Drawing.Size(88, 28)
       Me.cmd.TabIndex = 4
       Me.cmd.Text = "Button1"
       "
       "Label3
       "
       Me.Label3.Location = New System.Drawing.Point(24, 104)
       Me.Label3.Name = "Label3"
       Me.Label3.Size = New System.Drawing.Size(64, 24)
       Me.Label3.TabIndex = 5
       Me.Label3.Text = "Label3"
       "
       "GroupBox1
       "
       Me.GroupBox1.Anchor = ((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
                   Or System.Windows.Forms.AnchorStyles.Right)
       Me.GroupBox1.Controls.AddRange(New System.Windows.Forms.Control() {Me.Label4, Me.Label1, Me.pic, Me.txt, Me.cmd, Me.Label2})
       Me.GroupBox1.FlatStyle = System.Windows.Forms.FlatStyle.System
       Me.GroupBox1.Location = New System.Drawing.Point(8, 4)
       Me.GroupBox1.Name = "GroupBox1"
       Me.GroupBox1.Size = New System.Drawing.Size(384, 148)
       Me.GroupBox1.TabIndex = 6
       Me.GroupBox1.TabStop = False
       "
       "Label4
       "
       Me.Label4.Location = New System.Drawing.Point(92, 108)
       Me.Label4.Name = "Label4"
       Me.Label4.Size = New System.Drawing.Size(56, 16)
       Me.Label4.TabIndex = 5
       Me.Label4.Text = "And here:"
       "
       "Form1
       "
       Me.AutoScaleBaseSize = New System.Drawing.Size(5, 14)
       Me.ClientSize = New System.Drawing.Size(400, 378)
       Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.GroupBox1, Me.Label3, Me.lstLog})
       Me.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
       Me.Name = "Form1"
       Me.Text = "Event Tracker"
       Me.GroupBox1.ResumeLayout(False)
       Me.ResumeLayout(False)
   End Sub
  1. End Region
   Private Sub pic_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles pic.MouseEnter, cmd.MouseEnter
       Log("Mouse Enter")
   End Sub
   Private Sub pic_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pic.MouseMove
       log("Mouse Move: " )
   End Sub
   Private Sub Log(ByVal data As String)
       lstLog.Items.Add(data)
       Dim ItemsPerPage As Integer = lstLog.Height \ lstLog.ItemHeight
       lstLog.TopIndex = lstLog.Items.Count - ItemsPerPage
   End Sub

End Class


 </source>


Toggling list box Selection Mode: select one or select more than one

<source lang="vbnet"> Imports System Imports System.Drawing Imports System.Reflection Imports System.Windows.Forms public class MainClass

  Shared Sub Main()
     Dim form1 As Form = New Form1
     Application.Run(form1)
  End Sub

End Class


Public Class Form1

   Inherits System.Windows.Forms.Form
  1. Region " Windows Form Designer generated code "
   Public Sub New()
       MyBase.New()
       "This call is required by the Windows Form Designer.
       InitializeComponent()
       "Add any initialization after the InitializeComponent() call
   End Sub
   "Form 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
               components.Dispose()
           End If
       End If
       MyBase.Dispose(disposing)
   End Sub
   Friend WithEvents listBox1 As System.Windows.Forms.ListBox
   Friend WithEvents chkMulti As System.Windows.Forms.CheckBox
   Friend WithEvents lblWindow As System.Windows.Forms.Label
   "Required by the Windows Form Designer
   Private components As System.ruponentModel.IContainer
   "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.chkMulti = New System.Windows.Forms.CheckBox()
       Me.lblWindow = New System.Windows.Forms.Label()
       Me.listBox1 = New System.Windows.Forms.ListBox()
       Me.SuspendLayout()
       "
       "chkMulti
       "
       Me.chkMulti.Location = New System.Drawing.Point(192, 64)
       Me.chkMulti.Name = "chkMulti"
       Me.chkMulti.Size = New System.Drawing.Size(80, 16)
       Me.chkMulti.TabIndex = 1
       Me.chkMulti.Text = "MultiSelect"
       "
       "lblWindow
       "
       Me.lblWindow.Location = New System.Drawing.Point(32, 192)
       Me.lblWindow.Name = "lblWindow"
       Me.lblWindow.Size = New System.Drawing.Size(232, 16)
       Me.lblWindow.TabIndex = 2
       "
       "listBox1
       "
       Me.listBox1.Location = New System.Drawing.Point(24, 24)
       Me.listBox1.Name = "listBox1"
       Me.listBox1.Size = New System.Drawing.Size(144, 160)
       Me.listBox1.TabIndex = 0
       "
       "Form1
       "
       Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
       Me.ClientSize = New System.Drawing.Size(292, 216)
       Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.lblWindow, Me.chkMulti, Me.listBox1})
       Me.Name = "Form1"
       Me.Text = "Form1"
       Me.ResumeLayout(False)
   End Sub
  1. End Region
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       Dim x As Integer
       For x = 1 To 20
           listBox1().Items.Add("Entry # " & CStr(x))
       Next
   End Sub
   Private Sub chkMulti_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkMulti.CheckedChanged
       If chkMulti().CheckState = CheckState.Checked Then
           listBox1().SelectionMode = SelectionMode.MultiExtended
       Else
           listBox1().SelectionMode = SelectionMode.One
       End If
   End Sub

End Class


 </source>