ラッパーコンボコントロールへの項目追加に時間がかかります

文書番号 : 38334     文書種別 : 使用方法     登録日 : 2015/05/27     最終更新日 : 2015/05/27
文書を印刷する
対象製品
InputMan for Windows Forms 8.0J
詳細
ラッパーコンボコントロールで、AddやAddRangeメソッド等でItemsプロパティにコレクションを追加し、ドロップダウンリストに大量の項目を追加すると、コンボコントロールやラッパークラシックコンボコントロールに比べて大幅に時間がかかります。
この動作は、ラッパーコンボコントロールの構造上の理由によるものです。

ラッパーコンボコントロールへの項目追加の処理時間を短縮するには、以下のいずれかの方法を適用します。

◆データソースと連結して項目を追加する
以下のサンプルコードのように、DataSourceプロパティを使用して項目を設定します。

[Visual Basic]
' データテーブルを作成します。
Dim dt1 As New DataTable("List")
dt1.Columns.Add("Item")

' データテーブルに項目を追加します。
For i As Integer = 1 To 1000
    dt1.Rows.Add("Item" + i.ToString())
Next

' データテーブルをDataSourceプロパティに設定します。
Combo1.DataSource = dt1
Combo1.ValueMember = "Item"
Combo1.DisplayMember = "Item"
[C#]
// データテーブルを作成します。
DataTable dt1 = new DataTable("List");
dt1.Columns.Add("Item");

// データテーブルに項目を追加します。
for (int i=1; i<=1000; i++)
{
    dt1.Rows.Add("Item" + i.ToString());
}

// データテーブルをDataSourceプロパティに設定します。
combo1.DataSource = dt1;
combo1.ValueMember = "Item";
combo1.DisplayMember = "Item";

◆BeginUpdateおよびEditUpdateメソッドを利用する
Itemsプロパティにコレクションを追加する処理の前後で、以下のサンプルコードのようにBeginUpdateおよびEndUpdateメソッドを実行します。

[Visual Basic]
' BeginUpdateメソッドを実行します。
Combo1.BeginUpdate()

' コンボコントロールに項目を追加します。
For i As Integer = 1 To 1000
    Combo1.Items.Add("Item" + i.ToString())
Next

' EndUpdateメソッドを実行します。
Combo1.EndUpdate()
[C#]
// BeginUpdateメソッドを実行します。
combo1.BeginUpdate();

// コンボコントロールに項目を追加します。
for(int i=1; i<=1000; i++)
{
    combo1.Items.Add("Item" + i.ToString());
}

// EndUpdateメソッドを実行します。
combo1.EndUpdate();
関連情報