ListBox.ObjectCollection クラス
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)


ListBox.ObjectCollection クラスは、ListBox に表示される項目を格納します。ListBox クラス内では、ほかにも 2 つのコレクションが定義されており、これらを使用して、このコレクション内でどの項目が選択されているかを判断できます。ListBox.SelectedObjectCollection クラスは、ListBox.ObjectCollection 内で選択されている項目を判断するプロパティとメソッドを提供します。また、ListBox.SelectedIndexCollection クラスを使用すると、ListBox.ObjectCollection 内で選択されている項目のインデックスを確認できます。
項目をコレクションに追加するには、いくつか方法があります。Add メソッドを使用すると、単一のオブジェクトをコレクションに追加できます。複数のオブジェクトをコレクションに追加するには、項目の配列を作成し、その配列を AddRange メソッドに割り当てます。コレクション内の特定の位置にオブジェクトを挿入するには、Insert メソッドを使用します。項目を削除するには、Remove メソッドか、コレクション内の項目の位置が判明している場合は RemoveAt メソッドを使用できます。Clear メソッドを使用すると、Remove メソッドを使用して一度に 1 つずつ項目を削除する代わりに、コレクションからすべての項目を削除できます。
DataSource プロパティを使用しても、ListBox の項目を操作できます。DataSource プロパティを使用して項目を ListBox に追加した場合は、それらの項目を Items プロパティを使用して ListBox に表示できますが、ListBox.ObjectCollection のメソッドを使用して、リストに対して項目の追加や削除を行うことはできません。
ListBox.ObjectCollection は、項目を追加したり削除したりするためのメソッドおよびプロパティのほかに、コレクション内で項目を検索するメソッドも提供します。Contains メソッドを使用すると、オブジェクトがコレクションのメンバかどうかを判断できます。コレクション内に項目があることが判明している場合は、IndexOf メソッドを使用して、その項目がコレクションのどこに位置しているかを確認できます。

DrawMode プロパティを OwnerDrawVariable 値に設定し、DrawItem イベントおよび MeasureItem イベントを処理して、オーナー描画の ListBox を作成するコード例を次に示します。また、この例では、BorderStyle プロパティおよび ScrollAlwaysVisible プロパティを設定し、AddRange メソッドを使用しています。
この例を実行するには、System.Drawing 名前空間と System.Windows.Forms 名前空間をインポートした空のフォームに貼り付けます。このフォームのコンストラクタまたは Load メソッドで InitializeOwnerDrawnListBox を呼び出します。
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
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; } }
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; } }
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

System.Windows.Forms.ListBox.ObjectCollection
System.Windows.Forms.CheckedListBox.ObjectCollection


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


ListBox.ObjectCollection メンバ
System.Windows.Forms 名前空間
ListBox.SelectedObjectCollection
ListBox.SelectedIndexCollection
- ListBox.ObjectCollection クラスのページへのリンク