据我所知,IndexOf返回-1时,未找到该参数,但这没有任何意义了我。
我有这样的代码,遍历所有的DevExpress复选框我的形式,检查,看看他们的标签是什么,并试图找到它在传递给方法的“过滤器”参数。 如果在过滤器中发现的标签,应该检查复选框。 它总是等同于假。
public void FilterChanged(Control.ControlCollection controls, string filter)
{
filter = filter.Replace("[", String.Empty);
filter = filter.Replace("]", String.Empty);
foreach (Control control in controls)
{
if (control is CheckEdit && control.Tag != null)
{
var c = (CheckEdit)control;
var cFilter = c.Tag.ToString();
cFilter = cFilter.Replace("(", String.Empty);
cFilter = cFilter.Replace(")", String.Empty);
if (filter.ToUpper().IndexOf(c.Tag.ToString().ToUpper()) >= 0)
c.Checked = true;
else
c.Checked = false;
}
}
}
我将在我的内心断点IF
语句,我立即窗口我输入以下内容:
filter.ToUpper().IndexOf(c.Tag.ToString().ToUpper())
= -1
filter.ToUpper()
= “FILE NOT LIKE '%VERSIONINFO.CS%'”
cFilter.ToUpper()
= “FILE NOT LIKE '%VERSIONINFO.CS%'”
这些看起来几乎完全一样的东西,所以应该不会是返回0?
我不能用等号,因为过滤器可能包含多个条款,因而不会是平等的。