3

を使用してコンボボックスにアイテムを追加していますcomboBox.Items.Add(entry);。しかし、どうすればコンボボックス内の重複エントリ(つまり同じ名前のエントリ)を回避できますか。lib関数はありますか

4

4 に答える 4

12

追加する前にアイテムを確認してください。

if (!comboBox.Items.Contains(entry))
    comboBox.Items.Add(entry);
于 2013-02-10T18:01:28.777 に答える
4

ItemsコレクションにはContainsメソッドがあります

if (!comboBox.Items.Contains(entry)) {
    comboBox.Items.Add(entry);
}

ComboBox.Itemsプロパティのタイプは で、このようにメソッドSystem.Windows.Forms.ComboBox.ObjectCollectionを宣言しますContains

public bool Contains(object value)

を使用する場合AddRangeは、項目を配列で指定する必要があります。したがって、この配列に重複が含まれていないことを確認する必要があります。さらに、 にComboBoxすでに項目が含まれている場合は、この配列に同じ項目が含まれていないことを確認する必要があります。

最初に、ComboBoxが空で、アイテムが何らかの列挙型 (List<T>たとえば、または配列) で指定されていると仮定します。

comboBox.Items.AddRange(
    itemsToAdd
        .Distinct()
        .ToArray()
);

using System.Linq;コードの先頭にa が必要です。また、アイテムを注文することもできます。string私はそれらが次のタイプであると仮定します:

comboBox.Items.AddRange(
    itemsToAdd
        .Distinct()
        .OrderBy(s => s)
        .ToArray()
);

ComboBox に既にアイテムが含まれている場合は、追加されたアイテムからそれらを除外する必要があります

comboBox.Items.AddRange(
    itemsToAdd
        .Except(comboBox.Items.Cast<string>())
        .Distinct()
        .OrderBy(s => s)
        .ToArray()
);

itemsToAdd(これも文字列の列挙であると仮定します。)

于 2013-02-10T18:03:05.553 に答える
1

HashSetクラスを使用してコントロールをバインドし、プレゼンテーション テクノロジに依存するか、LINQ のDistinctメソッドを使用して重複をフィルター処理します。

于 2013-02-10T18:04:57.987 に答える
0

アイテムをキャストするのはどうですかString

var check = comboBox1.Items.Cast<string>().Any(c => c.ToString() == "test");
于 2013-02-11T16:14:43.180 に答える