【问题标题】:Searching through combobox items搜索组合框项目
【发布时间】:2016-06-20 18:14:40
【问题描述】:

我有一个包含以下项目的 ComboBox: AA, BB, CC

然后我有一个 DataGridView 与下面的行相同:

Remarks
-------
 AAA
 BBB
 CCC
 DDD

我需要检查 DataGridView 中的选定值是否存在于 ComboBox 项中。

我试过这个:

if (combobox.Items.Contains ("AAA")) {

}

但即使组合框项目上有“AAA”,它也总是返回 false。

【问题讨论】:

  • 你试过什么?你说的比赛是什么意思?这些值将如何相互匹配?
  • comboBox.Items.Contains(selectedGridValue)?这是 wpf 还是 windows 窗体?
  • 请查看更新后的问题。谢谢。
  • @QKWS 我提出了一个答案。

标签: c# winforms


【解决方案1】:

您的 gridView 项目是:

AAA
BBB
CCC
DDD

请注意,它们每个是 3 个字符,而您的 ComboBox 的:

AA
BB
CC

同时为了让你有以下返回true

comboBox.Items.Contains("AAA")

您的ComboBox 中必须有AAA准确 项。因此,它解释了为什么它返回false。要修复,您的ComboBox 必须具有ItemsAAABBBCCC,而不是AABBCC

另外,注意如果你使用string,那么:

string val = "AAA";
if (val.Contains("AA")){ //will return true
    //will be executed
}

但是如果你反过来:

string val = "AA";
if (val.Contains("AAA")){ //will return false
    //will not be executed
}

这是因为string.Contains 将返回true,只要有匹配的substring 作为Contains 参数。

但是

对于一个集合,假设您有 ComboBox 包含以下项目:

AAA
BBB
CCC

那么如果你试图找到:

if(comboBox.Items.Contains("AA")) //note that this has one less A

您将不会找到它。这是因为Contains 在上述情况下返回true,给定的参数(在上述情况下为AA)必须与集合中的元素完全匹配不是与元素的子字符串

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 2013-03-30
    • 2017-08-09
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多