ListBox.ObjectCollection Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje kolekci položek v objektu 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
- Dědičnost
-
ListBox.ObjectCollection
- Odvozené
- Atributy
- Implementuje
Příklady
Následující příklad kódu ukazuje vlastník-kreslit ListBox nastavením DrawMode vlastnosti na OwnerDrawVariable hodnotu a zpracování DrawItem a MeasureItem události. Ukazuje také nastavení BorderStyle a ScrollAlwaysVisible vlastnosti a použití AddRange metody.
Pokud chcete tento příklad spustit, vložte ho do prázdného formuláře, který importuje System.Drawing obor názvů a System.Windows.Forms obor názvů. Volání InitializeOwnerDrawnListBox z konstruktoru nebo Load metody formuláře
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
Poznámky
Třída ListBox.ObjectCollection ukládá položky zobrazené v souboru ListBox. V rámci ListBox třídy jsou definovány dvě další kolekce, které umožňují určit, které položky jsou vybrány v této kolekci. Třída ListBox.SelectedObjectCollection poskytuje vlastnosti a metody pro určení položek, které jsou vybrány v ListBox.ObjectCollectionrámci třídy, zatímco ListBox.SelectedIndexCollection třída umožňuje určit, jaké indexy v rámci jsou ListBox.ObjectCollection vybrány.
Existuje několik způsobů, jak do kolekce přidat položky. Metoda Add poskytuje možnost přidat jeden objekt do kolekce. Chcete-li do kolekce přidat několik objektů, vytvoříte pole položek a přiřadíte ho AddRange metodě. Pokud chcete vložit objekt do konkrétního umístění v kolekci, můžete použít metodu Insert . Pokud chcete odebrat položky, můžete použít metodu Remove nebo metodu RemoveAt , pokud víte, kde se položka nachází v kolekci. Tato Clear metoda umožňuje odebrat všechny položky z kolekce namísto použití Remove metody k odebrání jedné položky najednou.
Pomocí vlastnosti můžete také manipulovat s položkami objektu ListBoxDataSource . Pokud tuto vlastnost použijete DataSource k přidání položek do objektu ListBox, můžete zobrazit položky v objektu ListBoxItems pomocí vlastnosti, ale nelze přidávat nebo odebírat položky ze seznamu pomocí metod .ListBox.ObjectCollection
Kromě metod a vlastností pro přidávání a odebírání položek ListBox.ObjectCollection poskytuje také metody pro vyhledání položek v kolekci. Tato Contains metoda umožňuje určit, zda je objekt členem kolekce. Jakmile víte, že položka se nachází v kolekci, můžete pomocí IndexOf metody určit, kde se položka nachází v kolekci.
Konstruktory
| Name | Description |
|---|---|
| ListBox.ObjectCollection(ListBox, ListBox+ObjectCollection) |
Inicializuje novou instanci ListBox.ObjectCollection na základě jiného ListBox.ObjectCollection. |
| ListBox.ObjectCollection(ListBox, Object[]) |
Inicializuje novou instanci ListBox.ObjectCollection obsahující pole objektů. |
| ListBox.ObjectCollection(ListBox) |
Inicializuje novou instanci .ListBox.ObjectCollection |
Vlastnosti
| Name | Description |
|---|---|
| Count |
Získá počet položek v kolekci. |
| IsReadOnly |
Získá hodnotu určující, zda kolekce je jen pro čtení. |
| Item[Int32] |
Získá nebo nastaví položku v zadaném indexu v kolekci. |
Metody
| Name | Description |
|---|---|
| Add(Object) |
Přidá položku do seznamu položek pro položku ListBox. |
| AddRange(ListBox+ObjectCollection) |
Přidá položky existujícího ListBox.ObjectCollection do seznamu položek v objektu ListBox. |
| AddRange(Object[]) |
Přidá pole položek do seznamu položek pro položku ListBox. |
| Clear() |
Odebere všechny položky z kolekce. |
| Contains(Object) |
Určuje, zda je zadaná položka umístěna v kolekci. |
| CopyTo(Object[], Int32) |
Zkopíruje celou kolekci do existujícího pole objektů v zadaném umístění v rámci pole. |
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetEnumerator() |
Vrátí enumerátor, který se použije k iteraci v kolekci položek. |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| IndexOf(Object) |
Vrátí index v kolekci zadané položky. |
| Insert(Int32, Object) |
Vloží položku do seznamu v zadaném indexu. |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| Remove(Object) |
Odebere zadaný objekt z kolekce. |
| RemoveAt(Int32) |
Odebere položku v zadaném indexu v kolekci. |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Explicitní implementace rozhraní
| Name | Description |
|---|---|
| ICollection.CopyTo(Array, Int32) |
Toto rozhraní API podporuje produktovou infrastrukturu a není určené k použití přímo z uživatelského kódu. Zkopíruje prvky kolekce do pole počínaje konkrétním indexem pole. |
| ICollection.IsSynchronized |
Popis tohoto člena naleznete v tématu IsSynchronized. |
| ICollection.SyncRoot |
Popis tohoto člena naleznete v tématu SyncRoot. |
| IList.Add(Object) |
Toto rozhraní API podporuje produktovou infrastrukturu a není určené k použití přímo z uživatelského kódu. Přidá objekt do ListBox třídy. |
| IList.Contains(Object) |
Určuje, zda IList obsahuje konkrétní hodnotu. |
| IList.IndexOf(Object) |
Určuje index konkrétní položky v objektu IList. |
| IList.Insert(Int32, Object) |
Vloží položku do zadaného indexu IList . |
| IList.IsFixedSize |
Popis tohoto člena naleznete v tématu IsFixedSize. |
| IList.Item[Int32] |
Získá nebo nastaví prvek v zadaném indexu. |
| IList.Remove(Object) |
Odebere první výskyt konkrétního objektu z objektu IList. |
Metody rozšíření
| Name | Description |
|---|---|
| AsParallel(IEnumerable) |
Umožňuje paralelizaci dotazu. |
| AsQueryable(IEnumerable) |
Převede IEnumerable na IQueryable. |
| Cast<TResult>(IEnumerable) |
Přetypuje prvky IEnumerable na zadaný typ. |
| OfType<TResult>(IEnumerable) |
Filtruje prvky IEnumerable na základě zadaného typu. |