Friend WithEvents ListBox1 As System.Windows.Forms.ListBox
Private Sub InitializeOwnerDrawnListBox()
Me.ListBox1 = New System.Windows.Forms.ListBox
' Set the location and size.
ListBox1.Location = New Point(20, 20)
ListBox1.Size = New Size(240, 240)
' Populate the ListBox.ObjectCollection property
' with several strings, using the AddRange method.
Me.ListBox1.Items.AddRange(New Object() _
{"System.Windows.Forms", "System.Drawing", "System.Xml", _
"System.Net", "System.Runtime.Remoting", "System.Web"})
' Turn off the scrollbar.
ListBox1.ScrollAlwaysVisible = False
' Set the border style to a single, flat border.
ListBox1.BorderStyle = BorderStyle.FixedSingle
' Set the DrawMode property to the OwnerDrawVariable value.
' This means the MeasureItem and DrawItem events must be
' handled.
ListBox1.DrawMode = DrawMode.OwnerDrawVariable
Me.Controls.Add(Me.ListBox1)
End Sub
' Handle the DrawItem event for an owner-drawn ListBox.
Private Sub ListBox1_DrawItem(ByVal sender As Object, _
ByVal e As DrawItemEventArgs) Handles ListBox1.DrawItem
' If the item is the selected item, then draw the rectangle filled in
' blue. The item is selected when a bitwise And of the State property
' and the DrawItemState.Selected property is true.
If (e.State And DrawItemState.Selected = DrawItemState.Selected) Then
e.Graphics.FillRectangle(Brushes.CornflowerBlue, e.Bounds)
Else
' Otherwise, draw the rectangle filled in beige.
e.Graphics.FillRectangle(Brushes.Beige, e.Bounds)
End If
' Draw a rectangle in blue around each item.
e.Graphics.DrawRectangle(Pens.Blue, e.Bounds)
' Draw the text in the item.
e.Graphics.DrawString(Me.ListBox1.Items(e.Index), Me.Font, _
Brushes.Black, e.Bounds.X, e.Bounds.Y)
' Draw the focus rectangle around the selected item.
e.DrawFocusRectangle()
End Sub
' Handle the MeasureItem event for an owner-drawn ListBox.
Private Sub ListBox1_MeasureItem(ByVal sender As Object, _
ByVal e As MeasureItemEventArgs) Handles ListBox1.MeasureItem
' Cast the sender object back to ListBox type.
Dim theListBox As ListBox = CType(sender, ListBox)
' Get the string contained in each item.
Dim itemString As String = CType(theListBox.Items(e.Index), String)
' Split the string at the " . " character.
Dim resultStrings() As String = itemString.Split(".")
' If the string contains more than one period, increase the
' height by ten pixels; otherwise, increase the height by
' five pixels.
If (resultStrings.Length > 2) Then
e.ItemHeight += 10
Else
e.ItemHeight += 5
End If
End Sub

Comentários

Se a propriedade Sorted da ListBox for definida como true, os itens serão inseridos na lista em ordem alfabética.If the Sorted property of the ListBox is set to true, the items are inserted into the list alphabetically.Caso contrário, os itens são inseridos na ordem em que ocorrem na matriz.Otherwise, the items are inserted in the order that they occur within the array.Esse método normalmente é passado uma matriz de objetos String, mas uma matriz de qualquer tipo de objeto pode ser passada para esse método.This method is typically passed an array of String objects, but an array of any type of object can be passed to this method.Quando um objeto é adicionado à coleção, o ListBox primeiro verifica se a propriedade DisplayMember da classe ListControl tem o nome de um membro do objeto especificado como referência ao obter o texto do item.When an object is added to the collection, the ListBox first checks to see if the DisplayMember property of the ListControl class has the name of a member from the object specified to reference when obtaining the item text.Se a propriedade DisplayMember não tiver um membro especificado, a ListBox chamará o método ToString do objeto para obter o texto a ser exibido na lista.If the DisplayMember property does not have a member specified, the ListBox then calls the ToString method of the object to obtain the text to display in the list.Ao usar esse método para adicionar itens ao ListBox, você não precisa chamar os métodos BeginUpdate e EndUpdate para otimizar o desempenho.When using this method to add items to the ListBox, you do not need to call the BeginUpdate and EndUpdate methods to optimize performance.Ao adicionar itens a um ListBox, é mais eficiente classificar os itens primeiro e, em seguida, adicionar novos itens.When adding items to a ListBox, it is more efficient to sort the items first and then add new items.Você pode usar esse método para adicionar um grupo de itens à lista ou para reutilizar os itens armazenados em um ListBoxdiferente.You can use this method to add a group of items to the list or to reuse the items stored in a different ListBox.

Parâmetros

Comentários

Se a propriedade Sorted da ListBox for definida como true, os itens serão inseridos na lista em ordem alfabética.If the Sorted property of the ListBox is set to true, the items are inserted into the list alphabetically.Caso contrário, os itens são inseridos na ordem em que ocorrem na matriz.Otherwise, the items are inserted in the order that they occur within the array.Esse método normalmente é passado uma matriz de objetos String, mas uma matriz de qualquer tipo de objeto pode ser passada para esse método.This method is typically passed an array of String objects, but an array of any type of object can be passed to this method.Quando um objeto é adicionado à coleção, o ListBox primeiro verifica se a propriedade DisplayMember da classe ListControl tem o nome de um membro do objeto especificado como referência ao obter o texto do item.When an object is added to the collection, the ListBox first checks to see if the DisplayMember property of the ListControl class has the name of a member from the object specified to reference when obtaining the item text.Se a propriedade DisplayMember não tiver um membro especificado, a ListBox chamará o método ToString do objeto para obter o texto a ser exibido na lista.If the DisplayMember property does not have a member specified, the ListBox then calls the ToString method of the object to obtain the text to display in the list.