Esporta (0) Stampa
Espandi tutto

Classe ListBox

Rappresenta un controllo di Windows per la visualizzazione di un elenco di elementi.

Spazio dei nomi: System.Windows.Forms
Assembly: System.Windows.Forms (in system.windows.forms.dll)

[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)] 
public class ListBox : ListControl
/** @attribute ComVisibleAttribute(true) */ 
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) */ 
public class ListBox extends ListControl
ComVisibleAttribute(true) 
ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) 
public class ListBox extends ListControl

Il controllo ListBox consente di visualizzare un elenco di elementi che l'utente può scegliere con il mouse. Un controllo ListBox consente di eseguire selezioni singole o multiple utilizzando la proprietà SelectionMode. ListBox fornisce anche la proprietà MultiColumn per consentire la visualizzazione degli elementi ordinati in colonne piuttosto che in un unico elenco verticale. In tal modo, il controllo può visualizzare più elementi visibili e l'utente non deve scorrere l'elenco per individuare quello desiderato.

Di solito, Windows gestisce il disegno degli elementi da visualizzare nel controllo ListBox. È possibile utilizzare la proprietà DrawMode e gestire gli eventi MeasureItem e DrawItem, in modo da poter eseguire l'override del disegno automatico fornito da Windows e sostituirlo con un nuovo disegno personale. Possono essere utilizzati controlli ListBox creati dal proprietario per visualizzare elementi di altezza variabile, immagini o colori e tipi di carattere diversi per il testo di ciascun elemento dell'elenco. Anche le proprietà HorizontalExtent, GetItemHeight e GetItemRectangle agevolano il disegno di elementi personalizzati.

Oltre alle funzionalità di visualizzazione e selezione, l'oggetto ListBox fornisce anche funzioni che consentono di aggiungere in modo più efficiente elementi all'oggetto ListBox e di trovare del testo all'interno degli elementi dell'elenco. Mediante i metodi BeginUpdate e EndUpdate è possibile aggiungere un numero elevato di elementi all'oggetto ListBox senza che il controllo venga ridisegnato ogni volta che si aggiunge un elemento all'elenco. I metodi FindString e FindStringExact consentono di cercare nell'elenco un elemento contenente una stringa di ricerca specifica.

Le proprietà Items, SelectedItems e SelectedIndices consentono di accedere ai tre insiemi utilizzati dal controllo ListBox. Nella tabella riportata di seguito sono riportati i tre insiemi utilizzati dal controllo ListBox e il relativo uso all'interno del controllo.

Classe Collection

Utilizzare all'interno dell'oggetto ListBox

ListBox.ObjectCollection

Contiene tutti gli elementi del controllo ListBox.

ListBox.SelectedObjectCollection

Contiene un insieme di elementi selezionati che rappresenta un sottoinsieme degli elementi presenti nel controllo ListBox.

ListBox.SelectedIndexCollection

Contiene un insieme degli indici selezionati che rappresenta un sottoinsieme degli indici di ListBox.ObjectCollection. Tali indici specificano gli elementi selezionati.

Nei tre esempi che seguono vengono illustrati i tre insiemi indicizzati supportati dalla classe ListBox.

Nella tabella riportata di seguito viene descritto il modo in cui l'oggetto ListBox.ObjectCollection memorizza gli elementi dell'oggetto ListBox nonché il relativo stato di selezione in un oggetto ListBox esemplificativo.

Indice

Elemento

Stato della selezione in ListBox

0

oggetto1

Non selezionato

1

oggetto2

Selezionato

2

oggetto3

Non selezionato

3

oggetto4

Selezionato

4

oggetto5

Selezionato

In base all'esempio dell'oggetto ListBox.ObjectCollection, visualizzato nella tabella precedente, questa tabella illustra l'aspetto dell'oggetto ListBox.SelectedObjectCollection.

Indice

Elemento

0

oggetto2

1

oggetto4

2

oggetto5

In base all'esempio dell'oggetto ListBox.ObjectCollection , visualizzato nella tabella precedente, questa tabella illustra l'aspetto dell'oggetto ListBox.SelectedIndexCollection.

Indice

Indice dell'elemento

0

1

1

3

2

4

Il metodo Add della classe ListBox.ObjectCollection consente di aggiungere elementi al controllo ListBox. Il metodo Add può accettare qualsiasi oggetto quando si aggiunge un membro in ListBox. Quando un oggetto deve essere aggiunto al controllo ListBox, viene utilizzato il testo definito nel metodo ToString dell'oggetto, a meno che non sia stato specificato un nome membro dell'oggetto nella proprietà DisplayMember. Oltre ad aggiungere elementi utilizzando il metodo Add della classe ListBox.ObjectCollection, è anche possibile aggiungere elementi utilizzando la proprietà DataSource della classe ListControl.

NotaNota

Se in un form Windows di base è presente un oggetto ListBox, ComboBox o CheckedListBox e si desidera modificare l'insieme di stringhe di tali controlli in un form Windows derivato, l'insieme di stringhe di questi controlli nel form Windows di base deve essere vuoto. Se gli insiemi di stringhe non sono vuoti, quando si deriva un altro form Windows diventano in sola lettura.

Nell'esempio di codice riportato di seguito viene illustrato come creare un controllo ListBox che visualizza più elementi nelle colonne e consente di selezionare più elementi nel relativo elenco. Nel codice di esempio vengono aggiunti 50 elementi al controllo ListBox utilizzando il metodo Add della classe ListBox.ObjectCollection, quindi vengono selezionati tre elementi dall'elenco utilizzando il metodo SetSelected. Vengono quindi visualizzati i valori dall'insieme ListBox.SelectedObjectCollection, mediante la proprietà SelectedItems e dall'insieme ListBox.SelectedIndexCollection, mediante la proprietà SelectedIndices. Per eseguire questo esempio è necessario che il codice si trovi internamente e venga chiamato da un oggetto Form.

private void button1_Click(object sender, System.EventArgs e)
{
   // Create an instance of the ListBox.
   ListBox listBox1 = new ListBox();
   // Set the size and location of the ListBox.
   listBox1.Size = new System.Drawing.Size(200, 100);
   listBox1.Location = new System.Drawing.Point(10,10);
   // Add the ListBox to the form.
   this.Controls.Add(listBox1);
   // Set the ListBox to display items in multiple columns.
   listBox1.MultiColumn = true;
   // Set the selection mode to multiple and extended.
   listBox1.SelectionMode = SelectionMode.MultiExtended;
 
   // Shutdown the painting of the ListBox as items are added.
   listBox1.BeginUpdate();
   // Loop through and add 50 items to the ListBox.
   for (int x = 1; x <= 50; x++)
   {
      listBox1.Items.Add("Item " + x.ToString());
   }
   // Allow the ListBox to repaint and display the new items.
   listBox1.EndUpdate();
      
   // Select three items from the ListBox.
   listBox1.SetSelected(1, true);
   listBox1.SetSelected(3, true);
   listBox1.SetSelected(5, true);

   // Display the second selected item in the ListBox to the console.
   System.Diagnostics.Debug.WriteLine(listBox1.SelectedItems[1].ToString());
   // Display the index of the first selected item in the ListBox.
   System.Diagnostics.Debug.WriteLine(listBox1.SelectedIndices[0].ToString());             
}


private void button1_Click(Object sender, System.EventArgs e)
{
    // Create an instance of the ListBox.
    ListBox listBox1 = new ListBox();

    // Set the size and location of the ListBox.
    listBox1.set_Size(new System.Drawing.Size(200,100));
    listBox1.set_Location(new System.Drawing.Point(10,10));

    // Add the ListBox to the form.
    this.get_Controls().Add(listBox1);

    // Set the ListBox to display items in multiple columns.
    listBox1.set_MultiColumn(true);

    // Set the selection mode to multiple and extended.
    listBox1.set_SelectionMode(SelectionMode.MultiExtended);

    // Shutdown the painting of the ListBox as items are added.
    listBox1.BeginUpdate();

    // Loop through and add 50 items to the ListBox.
    for (int x = 1; x <= 50; x++) {
        listBox1.get_Items().Add(("Item" + (new Integer(x)).ToString()));
    }

    // Allow the ListBox to repaint and display the new items.
    listBox1.EndUpdate();

    // Select three items from the ListBox.
    listBox1.SetSelected(1,true);
    listBox1.SetSelected(3,true);
    listBox1.SetSelected(5,true);

    // Display the second selected item in the ListBox to the console.
    System.Diagnostics.Debug.WriteLine
        (listBox1.get_SelectedItems().get_Item(1).ToString());

    // Display the index of the first selected item in the ListBox.
    System.Diagnostics.Debug.WriteLine((new Integer
        (listBox1.get_SelectedIndices().get_Item(0))).ToString());
} //button1_Click

private function button1_Click(sender : Object, e : System.EventArgs)
{
   // Create an instance of the ListBox.
   var listBox1 : ListBox = new ListBox();
   // Set the size and location of the ListBox.
   listBox1.Size = new System.Drawing.Size(200, 100);
   listBox1.Location = new System.Drawing.Point(10,10);
   // Add the ListBox to the form.
   this.Controls.Add(listBox1);
   // Set the ListBox to display items in multiple columns.
   listBox1.MultiColumn = true;
   // Set the selection mode to multiple and extended.
   listBox1.SelectionMode = SelectionMode.MultiExtended;
 
   // Shutdown the painting of the ListBox as items are added.
   listBox1.BeginUpdate();
   // Loop through and add 50 items to the ListBox.
   for (var x : int = 1; x <= 50; x++)
   {
      listBox1.Items.Add("Item " + x.ToString());
   }
   // Allow the ListBox to repaint and display the new items.
   listBox1.EndUpdate();
      
   // Select three items from the ListBox.
   listBox1.SetSelected(1, true);
   listBox1.SetSelected(3, true);
   listBox1.SetSelected(5, true);

   // Display the second selected item in the ListBox to the console.
   System.Diagnostics.Debug.WriteLine(listBox1.SelectedItems[1].ToString());
   // Display the index of the first selected item in the ListBox.
   System.Diagnostics.Debug.WriteLine(listBox1.SelectedIndices[0].ToString());             
}


I membri statici pubblici (Shared in Visual Basic) di questo tipo sono validi per le operazioni multithreading. I membri di istanza non sono garantiti come thread safe.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile per Pocket PC, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema.

.NET Framework

Supportato in: 2.0 1.1 1.0

.NET Compact Framework

Supportato in: 2.0 1.0

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft