Condividi tramite


ListBox.ObjectCollection Classe

Definizione

Rappresenta la raccolta di elementi in 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
Ereditarietà
ListBox.ObjectCollection
Derivato
Attributi
Implementazioni

Esempio

Nell'esempio di codice seguente viene illustrato un proprietario disegnato impostando la DrawMode proprietà sul OwnerDrawVariable valore e gestendo gli DrawItem eventi eMeasureItem.ListBox Illustra anche l'impostazione delle BorderStyle proprietà e ScrollAlwaysVisible e l'uso del AddRange metodo .

Per eseguire questo esempio, incollarlo in una maschera vuota che importa lo System.Drawing spazio dei nomi e lo System.Windows.Forms spazio dei nomi. Chiamare InitializeOwnerDrawnListBox dal costruttore o Load dal metodo del modulo.

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

Commenti

La ListBox.ObjectCollection classe archivia gli elementi visualizzati in ListBox. Esistono due altre raccolte definite all'interno della ListBox classe che consentono di determinare quali elementi sono selezionati all'interno di questa raccolta. La ListBox.SelectedObjectCollection classe fornisce proprietà e metodi per determinare gli elementi selezionati all'interno di ListBox.ObjectCollection, mentre la ListBox.SelectedIndexCollection classe consente di determinare gli indici all'interno dell'oggetto ListBox.ObjectCollection selezionato.

Esistono diversi modi per aggiungere elementi alla raccolta. Il Add metodo offre la possibilità di aggiungere un singolo oggetto all'insieme. Per aggiungere un numero di oggetti all'insieme AddRange , creare una matrice di elementi e assegnarla al metodo. Se si vuole inserire un oggetto in una posizione specifica all'interno dell'insieme, è possibile usare il Insert metodo . Per rimuovere gli elementi, è possibile usare il metodo o il RemoveRemoveAt metodo se si conosce dove si trova l'elemento all'interno della raccolta. Il Clear metodo consente di rimuovere tutti gli elementi dalla raccolta anziché usare il Remove metodo per rimuovere un singolo elemento alla volta.

È anche possibile modificare gli elementi di un ListBox usando la DataSource proprietà . Se si usa la DataSource proprietà per aggiungere elementi a un ListBoxoggetto , è possibile visualizzare gli elementi nell'uso ListBox della Items proprietà, ma non è possibile aggiungere o rimuovere elementi dall'elenco usando i metodi di ListBox.ObjectCollection.

Oltre ai metodi e alle proprietà per l'aggiunta e la rimozione di elementi, ListBox.ObjectCollection fornisce anche metodi per trovare elementi all'interno della raccolta. Il Contains metodo consente di determinare se un oggetto è un membro dell'insieme. Dopo aver appreso che l'elemento si trova all'interno della raccolta, è possibile usare il IndexOf metodo per determinare dove si trova l'elemento all'interno della raccolta.

Costruttori

ListBox.ObjectCollection(ListBox)

Inizializza una nuova istanza di ListBox.ObjectCollection.

ListBox.ObjectCollection(ListBox, ListBox+ObjectCollection)

Inizializza una nuova istanza di ListBox.ObjectCollection sulla base di un altro oggetto ListBox.ObjectCollection.

ListBox.ObjectCollection(ListBox, Object[])

Inizializza una nuova istanza di ListBox.ObjectCollection contenente una matrice di oggetti.

Proprietà

Count

Ottiene il numero di elementi nella raccolta.

IsReadOnly

Ottiene un valore che indica se la raccolta è di sola lettura.

Item[Int32]

Ottiene o imposta l'elemento presente in corrispondenza dell'indice specificato all'interno dell'insieme.

Metodi

Add(Object)

Aggiunge un elemento all'elenco di elementi per un controllo ListBox.

AddRange(ListBox+ObjectCollection)

Aggiunge gli elementi di un insieme ListBox.ObjectCollection esistente all'elenco di elementi di un controllo ListBox.

AddRange(Object[])

Aggiunge una matrice di elementi all'elenco di elementi per un oggetto ListBox.

Clear()

Rimuove tutti gli elementi dalla raccolta.

Contains(Object)

Determina se l'elemento specificato è contenuto nell'insieme.

CopyTo(Object[], Int32)

Copia l'intero insieme in una matrice di oggetti esistente in corrispondenza della posizione specificata all'interno della matrice.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetEnumerator()

Restituisce un enumeratore da utilizzare per scorrere l'insieme degli elementi.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
IndexOf(Object)

Restituisce l'indice all'interno dell'insieme dell'elemento specificato.

Insert(Int32, Object)

Inserisce un elemento nell'elenco a discesa in corrispondenza dell'indice specificato.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
Remove(Object)

Rimuove l'oggetto specificato dalla raccolta.

RemoveAt(Int32)

Rimuove dall'insieme l'elemento presente in corrispondenza dell'indice specificato.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

ICollection.CopyTo(Array, Int32)

Questa API supporta l'infrastruttura del prodotto e non è previsto che venga usata direttamente dal codice.

Copia gli elementi della raccolta in una matrice, a partire da un indice della matrice specifico.

ICollection.IsSynchronized

Per una descrizione di questo membro, vedere IsSynchronized.

ICollection.SyncRoot

Per una descrizione di questo membro, vedere SyncRoot.

IList.Add(Object)

Questa API supporta l'infrastruttura del prodotto e non è previsto che venga usata direttamente dal codice.

Aggiunge un oggetto alla classe ListBox.

IList.Contains(Object)

Stabilisce se IList contiene un valore specifico.

IList.IndexOf(Object)

Determina l'indice di un elemento specifico in IList.

IList.Insert(Int32, Object)

Inserisce un elemento in IList in corrispondenza dell'indice specificato.

IList.IsFixedSize

Per una descrizione di questo membro, vedere IsFixedSize.

IList.Item[Int32]

Ottiene o imposta l'elemento in corrispondenza dell'indice specificato.

IList.Remove(Object)

Rimuove la prima occorrenza di un oggetto specifico da IList.

Metodi di estensione

Cast<TResult>(IEnumerable)

Esegue il cast degli elementi di un oggetto IEnumerable nel tipo specificato.

OfType<TResult>(IEnumerable)

Filtra gli elementi di un oggetto IEnumerable in base a un tipo specificato.

AsParallel(IEnumerable)

Consente la parallelizzazione di una query.

AsQueryable(IEnumerable)

Converte un oggetto IEnumerable in un oggetto IQueryable.

Si applica a

Vedi anche