我有一个包含项目的ComboBox:
AA, BB, CC
然后我有一个DataGridView,其行与下面的行相同:
Remarks
-------
AAA
BBB
CCC
DDD
我需要检查ComboBox项目中是否存在DataGridView的选定值。
我试过这个:
if (combobox.Items.Contains ("AAA")) {
}
但即使组合框项目中有“AAA”,它也总是返回false。
答案 0 :(得分:1)
您的gridView项目是:
ComboBox
请注意,它们各为3个字符,而AA
BB
CC
为:
true
为了让您有以下内容返回comboBox.Items.Contains("AAA")
:
AAA
ComboBox
中的false
项必须包含完全项。因此,它解释了为什么它会返回ComboBox
。要解决此问题,您的Items
必须AAA
BBB
,CCC
和AA
而不是BB
,CC
,以及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
。
<强> BUT 强>
对于集合,假设您AAA
BBB
CCC
包含以下项目:
if(comboBox.Items.Contains("AA")) //note that this has one less A
然后,如果你试图找到:
Contains
您将不找到它。这是因为在上述情况下true
要返回AA
,给出的参数(在上面的例子中为def get_ordered_dict(start, end, intial_value):
d = collections.OrderedDict()
for i in range(start, end+1):
d[i] = intial_value
return d
)必须与完全匹配该元素的子串与不集合。