ListBox.ObjectCollection Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Representa a coleção de itens em um 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
- Herança
-
ListBox.ObjectCollection
- Derivado
- Atributos
- Implementações
Exemplos
O exemplo de código a seguir demonstra um proprietário desenhado ListBox definindo a DrawMode propriedade como o OwnerDrawVariable
valor e tratando os DrawItem eventos e MeasureItem . Ele também demonstra a configuração das BorderStyle propriedades e ScrollAlwaysVisible e o uso do AddRange método .
Para executar este exemplo, cole-o em um formulário vazio que importa o System.Drawing namespace e o System.Windows.Forms namespace. Chame InitializeOwnerDrawnListBox
do construtor ou Load
método do formulário.
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
Comentários
A ListBox.ObjectCollection classe armazena os itens exibidos no ListBox. Há duas outras coleções definidas dentro da ListBox classe que permitem determinar quais itens são selecionados nessa coleção. A ListBox.SelectedObjectCollection classe fornece propriedades e métodos para determinar quais itens são selecionados dentro do ListBox.ObjectCollection, enquanto a ListBox.SelectedIndexCollection classe permite que você determine quais índices dentro do ListBox.ObjectCollection são selecionados.
Há várias maneiras de adicionar itens à coleção. O Add método fornece a capacidade de adicionar um único objeto à coleção. Para adicionar vários objetos à coleção, crie uma matriz de itens e atribua-a AddRange ao método . Se você quiser inserir um objeto em um local específico dentro da coleção, poderá usar o Insert método . Para remover itens, você pode usar o Remove método ou o RemoveAt método se souber onde o item está localizado dentro da coleção. O Clear método permite que você remova todos os itens da coleção em vez de usar o Remove método para remover um único item de cada vez.
Você também pode manipular os itens de um ListBox usando a DataSource propriedade . Se você usar a DataSource propriedade para adicionar itens a um ListBox, poderá exibir os itens no ListBox usando a Items propriedade , mas não poderá adicionar ou remover itens da lista usando os métodos do ListBox.ObjectCollection.
Além de métodos e propriedades para adicionar e remover itens, o ListBox.ObjectCollection também fornece métodos para localizar itens dentro da coleção. O Contains método permite determinar se um objeto é um membro da coleção. Depois de saber que o item está localizado na coleção, você pode usar o IndexOf método para determinar onde o item está localizado dentro da coleção.
Construtores
ListBox.ObjectCollection(ListBox) |
Inicializa uma nova instância de ListBox.ObjectCollection. |
ListBox.ObjectCollection(ListBox, ListBox+ObjectCollection) |
Inicializa uma nova instância de ListBox.ObjectCollection com base em outro ListBox.ObjectCollection. |
ListBox.ObjectCollection(ListBox, Object[]) |
Inicializa uma nova instância de ListBox.ObjectCollection que contém uma matriz de objetos. |
Propriedades
Count |
Obtém o número de itens na coleção. |
IsReadOnly |
Obtém um valor que indica se a coleção é somente leitura. |
Item[Int32] |
Obtém ou define o item no índice especificado da coleção. |
Métodos
Add(Object) |
Adiciona um item à lista de itens para um ListBox. |
AddRange(ListBox+ObjectCollection) |
Adiciona os itens de um ListBox.ObjectCollection existente à lista de itens em um ListBox. |
AddRange(Object[]) |
Adiciona uma matriz de itens à lista de itens de um ListBox. |
Clear() |
Remove todos os itens da coleção. |
Contains(Object) |
Determina se o item especificado está localizado dentro da coleção. |
CopyTo(Object[], Int32) |
Copia toda a coleção em uma matriz existente de objetos em um local especificado na matriz. |
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetEnumerator() |
Retorna um enumerador a ser usado para iterar pela coleção de itens. |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
IndexOf(Object) |
Retorna o índice na coleção do item especificado. |
Insert(Int32, Object) |
Insere um item na caixa de listagem no índice especificado. |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
Remove(Object) |
Remove o objeto especificado da coleção. |
RemoveAt(Int32) |
Remove o item no índice especificado da coleção. |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
Implantações explícitas de interface
ICollection.CopyTo(Array, Int32) |
Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código. Copia os elementos da coleção em uma matriz, começando em um índice de matriz específico. |
ICollection.IsSynchronized |
Para obter uma descrição desse membro, confira IsSynchronized. |
ICollection.SyncRoot |
Para obter uma descrição desse membro, confira SyncRoot. |
IList.Add(Object) |
Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código. Adiciona um objeto à classe ListBox. |
IList.Contains(Object) |
Determinará se o IList contiver um valor específico. |
IList.IndexOf(Object) |
Determina o índice de um item específico em IList. |
IList.Insert(Int32, Object) |
Insere um item na IList no índice especificado. |
IList.IsFixedSize |
Para obter uma descrição desse membro, confira IsFixedSize. |
IList.Item[Int32] |
Obtém ou define o elemento no índice especificado. |
IList.Remove(Object) |
Remove a primeira ocorrência de um objeto específico do IList. |
Métodos de Extensão
Cast<TResult>(IEnumerable) |
Converte os elementos de um IEnumerable para o tipo especificado. |
OfType<TResult>(IEnumerable) |
Filtra os elementos de um IEnumerable com base em um tipo especificado. |
AsParallel(IEnumerable) |
Habilita a paralelização de uma consulta. |
AsQueryable(IEnumerable) |
Converte um IEnumerable em um IQueryable. |