次の方法で共有


ListBox.BeginUpdate メソッド

項目を ListBox に 1 つずつ追加するときにパフォーマンスを維持するには、 EndUpdate メソッドが呼び出されるまでコントロールを再描画しないようにします。

Public Sub BeginUpdate()
[C#]
public void BeginUpdate();
[C++]
public: void BeginUpdate();
[JScript]
public function BeginUpdate();

解説

複数の項目を ListBox に追加する場合は、 ListBoxItems プロパティを使用してアクセスする、 ListBox.ObjectCollection クラスの AddRange メソッドを使用することをお勧めします。この方法を使用すると、項目の配列を 1 回の操作でリストに追加できます。しかし、 ListBox.ObjectCollection クラスの Add メソッドを使用して 1 つずつ項目を追加する場合は、 BeginUpdate メソッドを使用して、項目がリストに追加されるたびに ListBox が再描画されるという状況を回避できます。項目をリストに追加するタスクが完了した後で、 EndUpdate メソッドを呼び出して ListBox を再描画できるようにします。リストに多数の項目を追加する場合は、この方法で項目を追加すると、 ListBox を描画するときにちらつきません。

使用例

5,000 の項目を ListBox に追加するときに、 BeginUpdate メソッドと EndUpdate メソッドを使用する例を次に示します。この例は、 listBox1 という名前の ListBox コントロールが Form に追加されていること、およびこのメソッドがそのフォーム内に含まれ、そこから呼び出されていることを前提にしています。

 
Public Sub AddToMyListBox()
    ' Stop the ListBox from drawing while items are added.
    listBox1.BeginUpdate()
       
    ' Loop through and add five thousand new items.
    Dim x As Integer
    For x = 1 To 4999
        listBox1.Items.Add("Item " & x.ToString())
    Next x
    ' End the update process and force a repaint of the ListBox.
    listBox1.EndUpdate()
End Sub


[C#] 
public void AddToMyListBox()
{
   // Stop the ListBox from drawing while items are added.
   listBox1.BeginUpdate();

   // Loop through and add five thousand new items.
   for(int x = 1; x < 5000; x++)
   {
      listBox1.Items.Add("Item " + x.ToString());   
   }
   // End the update process and force a repaint of the ListBox.
   listBox1.EndUpdate();
}


[C++] 
public:
void AddToMyListBox()
{
   // Stop the ListBox from drawing while items are added.
   listBox1->BeginUpdate();

   // Loop through and add five thousand new items.
   for(int x = 1; x < 5000; x++)
   {
      listBox1->Items->Add(String::Format( S"Item {0}", __box(x)));   
   }
   // End the update process and force a repaint of the ListBox.
   listBox1->EndUpdate();
}


[JScript] 
function AddToMyListBox(){
    // Stop the ListBox from drawing while items are added.
    listBox1.BeginUpdate()
       
    // Loop through and add five thousand new items.
    for(var x = 0; x < 5000; x++)
        listBox1.Items.Add("Item " + x.ToString())
    // End the update process and force a repaint of the ListBox.
    listBox1.EndUpdate()
}

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

ListBox クラス | ListBox メンバ | System.Windows.Forms 名前空間 | EndUpdate