Compartir vía


ListBox.ObjectCollection Clase

Definición

Representa la colección de elementos de un ListBox.

public: ref class ListBox::ObjectCollection : System::Collections::IList
[System.ComponentModel.ListBindable(false)]
public class ListBox.ObjectCollection : System.Collections.IList
[<System.ComponentModel.ListBindable(false)>]
type ListBox.ObjectCollection = class
    interface IList
    interface ICollection
    interface IEnumerable
Public Class ListBox.ObjectCollection
Implements IList
Herencia
ListBox.ObjectCollection
Derivado
Atributos
Implementaciones

Ejemplos

En el ejemplo de código siguiente se muestra un propietario dibujado estableciendo la DrawMode propiedad en el OwnerDrawVariable valor y controlando los DrawItem eventos y MeasureItem .ListBox También se muestra cómo establecer las BorderStyle propiedades y ScrollAlwaysVisible y usar el AddRange método .

Para ejecutar este ejemplo, péguelo en un formulario vacío que importe el System.Drawing espacio de nombres y el System.Windows.Forms espacio de nombres. Llame InitializeOwnerDrawnListBox desde el constructor o Load método del formulario.

internal:
   System::Windows::Forms::ListBox^ ListBox1;

private:
   void InitializeOwnerDrawnListBox()
   {
      this->ListBox1 = gcnew System::Windows::Forms::ListBox;
      
      // Set the location and size.
      ListBox1->Location = Point(20,20);
      ListBox1->Size = System::Drawing::Size( 240, 240 );
      
      // Populate the ListBox.ObjectCollection property 
      // with several strings, using the AddRange method.
      array<Object^>^temp0 = {"System.Windows.Forms","System.Drawing","System.Xml","System.Net","System.Runtime.Remoting","System.Web"};
      this->ListBox1->Items->AddRange( temp0 );
      
      // 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;
      ListBox1->MeasureItem += gcnew MeasureItemEventHandler( this, &Form1::ListBox1_MeasureItem );
      ListBox1->DrawItem += gcnew DrawItemEventHandler( this, &Form1::ListBox1_DrawItem );
      this->Controls->Add( this->ListBox1 );
   }

   // Handle the DrawItem event for an owner-drawn ListBox.
   void ListBox1_DrawItem( Object^ /*sender*/, DrawItemEventArgs^ e )
   {
      // 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 & DrawItemState::Selected) == DrawItemState::Selected )
      {
         e->Graphics->FillRectangle( Brushes::CornflowerBlue, e->Bounds );
      }
      else
      {
         
         // Otherwise, draw the rectangle filled in beige.
         e->Graphics->FillRectangle( Brushes::Beige, e->Bounds );
      }
      
      // Draw a rectangle in blue around each item.
      e->Graphics->DrawRectangle( Pens::Blue, e->Bounds );
      
      // Draw the text in the item.
      e->Graphics->DrawString( ListBox1->Items[ e->Index ]->ToString(), this->Font, Brushes::Black, (float)e->Bounds.X, (float)e->Bounds.Y );
      
      // Draw the focus rectangle around the selected item.
      e->DrawFocusRectangle();
   }


   // Handle the MeasureItem event for an owner-drawn ListBox.
   void ListBox1_MeasureItem( Object^ sender, MeasureItemEventArgs^ e )
   {
      
      // Cast the sender object back to ListBox type.
      ListBox^ theListBox = dynamic_cast<ListBox^>(sender);
      
      // Get the string contained in each item.
      String^ itemString = dynamic_cast<String^>(theListBox->Items[ e->Index ]);
      
      // Split the string at the " . "  character.
      array<Char>^temp1 = {'.'};
      array<String^>^resultStrings = itemString->Split( temp1 );
      
      // 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 )
      {
         e->ItemHeight += 10;
      }
      else
      {
         e->ItemHeight += 5;
      }
   }
internal System.Windows.Forms.ListBox ListBox1;

private void InitializeOwnerDrawnListBox()
{
    this.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.
    this.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;
    ListBox1.MeasureItem += 
        new MeasureItemEventHandler(ListBox1_MeasureItem);
    ListBox1.DrawItem += new DrawItemEventHandler(ListBox1_DrawItem);
    this.Controls.Add(this.ListBox1);
}

// Handle the DrawItem event for an owner-drawn ListBox.
private void ListBox1_DrawItem(object sender, DrawItemEventArgs e)
{

    // 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 & DrawItemState.Selected) == DrawItemState.Selected)
    {
        e.Graphics.FillRectangle(Brushes.CornflowerBlue, e.Bounds);
    }
    else
    {
        // Otherwise, draw the rectangle filled in beige.
        e.Graphics.FillRectangle(Brushes.Beige, e.Bounds);
    }

    // Draw a rectangle in blue around each item.
    e.Graphics.DrawRectangle(Pens.Blue, e.Bounds);

    // Draw the text in the item.
    e.Graphics.DrawString(ListBox1.Items[e.Index].ToString(),
        this.Font, Brushes.Black, e.Bounds.X, e.Bounds.Y);

    // Draw the focus rectangle around the selected item.
    e.DrawFocusRectangle();
}

// Handle the MeasureItem event for an owner-drawn ListBox.
private void ListBox1_MeasureItem(object sender, 
    MeasureItemEventArgs e)
{

    // Cast the sender object back to ListBox type.
    ListBox theListBox = (ListBox) sender;

    // Get the string contained in each item.
    string itemString = (string) theListBox.Items[e.Index];

    // Split the string at the " . "  character.
    string[] resultStrings = 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)
    {
        e.ItemHeight += 10;
    }
    else
    {
        e.ItemHeight += 5;
    }
}
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

Comentarios

La ListBox.ObjectCollection clase almacena los elementos mostrados en .ListBox Hay otras dos colecciones definidas dentro de la ListBox clase que permiten determinar qué elementos se seleccionan dentro de esta colección. La ListBox.SelectedObjectCollection clase proporciona propiedades y métodos para determinar qué elementos se seleccionan dentro de ListBox.ObjectCollection, mientras que la ListBox.SelectedIndexCollection clase le permite determinar qué índices hay seleccionados ListBox.ObjectCollection .

Hay varias maneras de agregar elementos a la colección. El Add método proporciona la capacidad de agregar un solo objeto a la colección. Para agregar una serie de objetos a la colección, cree una matriz de elementos y asígnela al AddRange método . Si desea insertar un objeto en una ubicación específica dentro de la colección, puede usar el Insert método . Para quitar elementos, puede usar el Remove método o el RemoveAt método si sabe dónde se encuentra el elemento dentro de la colección. El Clear método permite quitar todos los elementos de la colección en lugar de usar el Remove método para quitar un solo elemento a la vez.

También puede manipular los elementos de un ListBox mediante la DataSource propiedad . Si usa la DataSource propiedad para agregar elementos a , ListBoxpuede ver los elementos de mediante la ListBoxItems propiedad , pero no puede agregar ni quitar elementos de la lista mediante los métodos de ListBox.ObjectCollection.

Además de métodos y propiedades para agregar y quitar elementos, ListBox.ObjectCollection también proporciona métodos para buscar elementos dentro de la colección. El Contains método permite determinar si un objeto es miembro de la colección. Una vez que sepa que el elemento se encuentra dentro de la colección, puede usar el IndexOf método para determinar dónde se encuentra el elemento dentro de la colección.

Constructores

ListBox.ObjectCollection(ListBox)

Inicializa una nueva instancia de la clase ListBox.ObjectCollection.

ListBox.ObjectCollection(ListBox, ListBox+ObjectCollection)

Inicializa una nueva instancia de ListBox.ObjectCollection basada en otra colección ListBox.ObjectCollection.

ListBox.ObjectCollection(ListBox, Object[])

Inicializa una nueva instancia de ListBox.ObjectCollection que contiene una matriz de objetos.

Propiedades

Count

Obtiene el número de elementos de la colección.

IsReadOnly

Obtiene un valor que indica si la colección es de solo lectura.

Item[Int32]

Obtiene o establece el elemento en el índice especificado de la colección.

Métodos

Add(Object)

Agrega un elemento a la lista de elementos de un control ListBox.

AddRange(ListBox+ObjectCollection)

Agrega los elementos de una clase ListBox.ObjectCollection existente a la lista de elementos de un control ListBox.

AddRange(Object[])

Agrega una matriz de elementos a la lista de elementos de ListBox.

Clear()

Quita todos los elementos de la colección.

Contains(Object)

Determina si el elemento especificado está ubicado en la colección.

CopyTo(Object[], Int32)

Copia toda la colección en una matriz de objetos existente en el lugar especificado de la matriz.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetEnumerator()

Devuelve un enumerador que se va a utilizar para recorrer en iteración la colección de elementos.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
IndexOf(Object)

Devuelve el índice del elemento especificado en la colección.

Insert(Int32, Object)

Inserta un elemento en el cuadro de lista en el índice especificado.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
Remove(Object)

Quita el objeto especificado de la colección.

RemoveAt(Int32)

Quita el elemento en el índice especificado de la colección.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Implementaciones de interfaz explícitas

ICollection.CopyTo(Array, Int32)

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Copia los elementos de la colección en una matriz a partir de un índice de matriz concreto.

ICollection.IsSynchronized

Para obtener una descripción de este miembro, vea IsSynchronized.

ICollection.SyncRoot

Para obtener una descripción de este miembro, vea SyncRoot.

IList.Add(Object)

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Agrega un objeto a la clase ListBox.

IList.Contains(Object)

Determina si IList contiene un valor específico.

IList.IndexOf(Object)

Determina el índice de un elemento específico de IList.

IList.Insert(Int32, Object)

Inserta un elemento en la interfaz IList, en el índice especificado.

IList.IsFixedSize

Para obtener una descripción de este miembro, vea IsFixedSize.

IList.Item[Int32]

Obtiene o establece el elemento en el índice especificado.

IList.Remove(Object)

Quita la primera aparición de un objeto específico de la interfaz IList.

Métodos de extensión

Cast<TResult>(IEnumerable)

Convierte los elementos de IEnumerable en el tipo especificado.

OfType<TResult>(IEnumerable)

Filtra los elementos de IEnumerable en función de un tipo especificado.

AsParallel(IEnumerable)

Habilita la paralelización de una consulta.

AsQueryable(IEnumerable)

Convierte una interfaz IEnumerable en IQueryable.

Se aplica a

Consulte también