Questa documentazione è stata archiviata e non viene gestita.

Classe ListBox.ObjectCollection

Aggiornamento: novembre 2007

Rappresenta l'insieme di elementi di una classe ListBox.

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

[ListBindableAttribute(false)]
public class ObjectCollection : IList, 
	ICollection, IEnumerable
/** @attribute ListBindableAttribute(false) */
public class ObjectCollection implements IList, 
	ICollection, IEnumerable
public class ObjectCollection implements IList, ICollection, IEnumerable

La classe ListBox.ObjectCollection memorizza gli elementi visualizzati nel controllo ListBox. Nella classe ListBox sono definiti altri due insiemi che consentono di determinare gli elementi selezionati in questo insieme. La classe ListBox.SelectedObjectCollection fornisce le proprietà e i metodi per determinare gli elementi selezionati in ListBox.ObjectCollection mentre la classe ListBox.SelectedIndexCollection consente di determinare gli indici selezionati all'interno di ListBox.ObjectCollection.

Esistono varie modalità per aggiungere elementi all'insieme. Il metodo Add consente di aggiungere un solo oggetto all'insieme. Per aggiungere più oggetti a un insieme, è preferibile creare una matrice di elementi e assegnarla al metodo AddRange. Per inserire un oggetto in una posizione specifica all'interno dell'insieme, è possibile utilizzare il metodo Insert. Per rimuovere gli elementi, è possibile utilizzare il metodo Remove oppure il metodo RemoveAt se si conosce la posizione dell'elemento all'interno dell'insieme. Può essere preferibile utilizzare il metodo Clear per rimuovere tutti gli elementi dall'insieme con un'unica operazione, anziché il metodo Remove per rimuovere un elemento alla volta.

È inoltre possibile manipolare gli elementi di un controllo ListBox utilizzando la proprietà DataSource. Se si utilizza la proprietà DataSource per aggiungere elementi a un controllo ListBox, è possibile visualizzare gli elementi in ListBox utilizzando la proprietà Items ma non è possibile aggiungere o rimuovere gli elementi dall'elenco utilizzando i metodi di ListBox.ObjectCollection.

Oltre ai metodi e alle proprietà che consentono di aggiungere e rimuovere elementi, l'oggetto ListBox.ObjectCollection fornisce anche i metodi per la ricerca degli elementi all'interno dell'insieme. Il metodo Contains consente di determinare se un oggetto è un membro dell'insieme. Una volta accertata la presenza dell'elemento all'interno dell'insieme, è possibile utilizzare il metodo IndexOf per determinarne la posizione.

Nell'esempio di codice riportato di seguito viene illustrato un oggetto ListBox creato dal proprietario mediante l'impostazione della proprietà DrawMode sul valore OwnerDrawVariable e la gestione degli eventi DrawItem e MeasureItem. Viene inoltre illustrato come impostare le proprietà BorderStyle e ScrollAlwaysVisible e come utilizzare il metodo AddRange.

Per eseguire questo esempio, incollare il codice in un form vuoto in cui vengono importati gli spazi dei nomi System.Drawing e System.Windows.Forms. Chiamare InitializeOwnerDrawnListBox dal costruttore del form o dal metodo Load.

	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;
		}

	}



private System.Windows.Forms.ListBox listBox1;

private void InitializeOwnerDrawnListBox()
{
    this.listBox1 = new System.Windows.Forms.ListBox();
    // Set the location and size.
    listBox1.set_Location(new Point(20, 20));
    listBox1.set_Size(new Size(240, 240));
    // Populate the ListBox.ObjectCollection property 
    // with several strings, using the AddRange method.
    this.listBox1.get_Items().AddRange(new Object[] { 
        "System.Windows.Forms", "System.Drawing", 
        "System.Xml", "System.Net", "System.Runtime.Remoting", 
        "System.Web" });
    // Turn off the scrollbar.
    listBox1.set_ScrollAlwaysVisible(false);
    // Set the border style to a single, flat border.
    listBox1.set_BorderStyle(BorderStyle.FixedSingle);
    // Set the DrawMode property to the OwnerDrawVariable value. 
    // This means the MeasureItem and DrawItem events must be 
    // handled.
    listBox1.set_DrawMode(DrawMode.OwnerDrawVariable);
    listBox1.add_MeasureItem(new MeasureItemEventHandler(
        listBox1_MeasureItem));
    listBox1.add_DrawItem(new DrawItemEventHandler(listBox1_DrawItem));
    this.get_Controls().Add(this.listBox1);
} //InitializeOwnerDrawnListBox

// 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.get_State() & DrawItemState.Selected) 
        == DrawItemState.Selected) {
        e.get_Graphics().FillRectangle(Brushes.get_CornflowerBlue(), 
            e.get_Bounds());
    }
    else {
        // Otherwise, draw the rectangle filled in beige.
        e.get_Graphics().FillRectangle(Brushes.get_Beige(), 
            e.get_Bounds());
    }
    // Draw a rectangle in blue around each item.
    e.get_Graphics().DrawRectangle(Pens.get_Blue(), e.get_Bounds());
    // Draw the text in the item.
    e.get_Graphics().DrawString(listBox1.get_Items().get_Item(
        e.get_Index()).ToString(), this.get_Font(), 
        Brushes.get_Black(), e.get_Bounds().get_X(), 
        e.get_Bounds().get_Y());
    // Draw the focus rectangle around the selected item.
    e.DrawFocusRectangle();
} //listBox1_DrawItem

// 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.get_Items().
           get_Item(e.get_Index()));
    // Split the string at the " . "  character.
    String resultStrings[] = itemString.Split(new char[] { '.' });
    // 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.set_ItemHeight(e.get_ItemHeight() + 10);
    }
    else {
        e.set_ItemHeight(e.get_ItemHeight() + 5);
    }
} //listBox1_MeasureItem


Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

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

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

.NET Framework

Supportato in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supportato in: 3.5, 2.0, 1.0
Mostra: