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íka nakreslený ListBox nastavením DrawMode vlastnosti na OwnerDrawVariable
hodnotu a zpracováním DrawItem událostí a MeasureItem . Ukazuje také nastavení BorderStyle vlastností a ScrollAlwaysVisible 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 objektu ListBox. V rámci ListBox třídy jsou definovány dvě další kolekce, které umožňují určit, které položky jsou v této kolekci vybrány. Třída ListBox.SelectedObjectCollection poskytuje vlastnosti a metody pro určení, které položky jsou vybrány v rámci ListBox.ObjectCollection, zatímco ListBox.SelectedIndexCollection třída umožňuje určit, které indexy v rámci ListBox.ObjectCollection jsou vybrány.
Existuje několik způsobů, jak přidat položky do kolekce. Metoda Add poskytuje možnost přidat do kolekce jeden objekt. Chcete-li do kolekce přidat několik objektů, vytvořte pole položek a přiřaďte ho AddRange k metodě. Pokud chcete vložit objekt na určité místo v rámci kolekce, 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 v kolekci nachází. Metoda Clear umožňuje odebrat všechny položky z kolekce místo použití Remove metody k odebrání jedné položky najednou.
S položkami objektu ListBox můžete manipulovat také pomocí DataSource vlastnosti . Pokud použijete DataSource vlastnost k přidání položek do objektu ListBox, můžete zobrazit položky v objektu ListBox pomocí Items vlastnosti , ale nemůžete položky přidat nebo odebrat ze seznamu pomocí metod ListBox.ObjectCollectionnástroje .
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. Metoda Contains umožňuje určit, zda je objekt členem kolekce. Jakmile víte, že se položka nachází v kolekci, můžete pomocí IndexOf metody určit, kde se položka nachází v kolekci.
Konstruktory
ListBox.ObjectCollection(ListBox) |
Inicializuje novou instanci objektu ListBox.ObjectCollection. |
ListBox.ObjectCollection(ListBox, ListBox+ObjectCollection) |
Inicializuje novou instanci objektu na ListBox.ObjectCollection základě jiné instance ListBox.ObjectCollection. |
ListBox.ObjectCollection(ListBox, Object[]) |
Inicializuje novou instanci ListBox.ObjectCollection obsahující pole objektů. |
Vlastnosti
Count |
Získá počet prvků v kolekci. |
IsReadOnly |
Získá hodnotu, která udává, zda je kolekce určena jen pro čtení. |
Item[Int32] |
Získá nebo nastaví položku v zadaném indexu v rámci kolekce. |
Metody
Add(Object) |
Přidá položku do seznamu položek pro ListBoxobjekt . |
AddRange(ListBox+ObjectCollection) |
Přidá existující ListBox.ObjectCollection položky do seznamu položek v objektu ListBox. |
AddRange(Object[]) |
Přidá pole položek do seznamu položek pro 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čí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetEnumerator() |
Vrátí enumerátor, který se má použít k iteraci kolekcí položek. |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Získá aktuální Type instanci. (Zděděno od Object) |
IndexOf(Object) |
Vrátí index v rámci kolekce zadané položky. |
Insert(Int32, Object) |
Vloží položku do seznamu v zadaném indexu. |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (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í
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 najdete v tématu IsSynchronized. |
ICollection.SyncRoot |
Popis tohoto člena najdete 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 obsahuje IList 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 najdete v tématu IsFixedSize. |
IList.Item[Int32] |
Získá nebo nastaví prvek u zadaného indexu. |
IList.Remove(Object) |
Odebere první výskyt konkrétního objektu z objektu IList. |
Metody rozšíření
Cast<TResult>(IEnumerable) |
Přetypuje prvky objektu na IEnumerable zadaný typ. |
OfType<TResult>(IEnumerable) |
Filtruje prvky objektu IEnumerable na základě zadaného typu. |
AsParallel(IEnumerable) |
Umožňuje paralelizaci dotazu. |
AsQueryable(IEnumerable) |
Převede objekt na IEnumerableIQueryable. |