检查组合框是否包含项目

本文关键字:包含 项目 是否 检查组 组合 检查 | 更新日期: 2023-09-27 18:27:21

我有这个:

<ComboBox SelectedValuePath="Content" x:Name="cb">
  <ComboBoxItem>Combo</ComboBoxItem>
  <ComboBoxItem>Box</ComboBoxItem>
  <ComboBoxItem>Item</ComboBoxItem>
</ComboBox>

如果我使用

cb.Items.Contains("Combo")

cb.Items.Contains(new ComboBoxItem {Content = "Combo"})

则返回CCD_ 1。

有人能告诉我如何检查名为ComboComboBoxItem是否存在于ComboBox cb中吗?

检查组合框是否包含项目

Items是一个ItemCollectionnot list of strings。在您的情况下,它是一个collection of ComboboxItem,您需要检查它的Content属性。

cb.Items.Cast<ComboBoxItem>().Any(cbi => cbi.Content.Equals("Combo"));

cb.Items.OfType<ComboBoxItem>().Any(cbi => cbi.Content.Equals("Combo"));

你可以在每个项目上循环,并在你找到想要的项目时中断-

bool itemExists = false;
foreach (ComboBoxItem cbi in cb.Items)
{
    itemExists = cbi.Content.Equals("Combo");
    if (itemExists) break;
}

如果要像在False1中那样使用Contains函数,则必须将字符串添加到ComboBox,而不是ComboBoxItems:cb.Items.Add("Combo")。该字符串将像ComboBoxItem一样显示。

在C#Winform应用程序中,您可以执行以下操作:

//创建一个类似以下的函数

internal static bool CheckCombo(ComboBox.ObjectCollection items, string Search)
{
    bool isFound = false;
    foreach (var item in items)
    {
        if (item.Equals(Search))
        {
            isFound = true; break;
        }
    }
    return isFound;
}

当将您的项目添加到组合框时,您可以调用这样的函数

if (!Functions.CheckCombo(Combobox.Items, "ValueToSearch"))
{
  //Adding the value if is not found in the combobox
  Combobox.Items.Add("ValueToSearch");
}