即使相同的字符串也不匹配

Even same strings does not match

你好,我有一个 datagridview,它有列表的数据源,这个列表是:

public class UniqueNounWithFreq
{
    public int freq { get; set; }
    public string word { get; set; }

    public UniqueNounWithFreq(string word, int freq)
    {
        this.freq = freq;
        this.word = word;
    }
}



if (e.KeyChar == (char)13)
{
    foreach (DataGridViewRow item in dataGridView_w2wm2.Rows)
    {
        if (!item.Cells[2].Value.ToString().Contains(textBox1.ToString().ToLower()))
        {
            item.Visible = false;
        }
        else
        {
            item.Visible = true;
        }
    }
}

当我想通过按键隐藏一行时它抛出

Row associated with the currency manager's position cannot be made invisible exception

您可以在这里看到:Unable To set row visible false of a datagridview。我尝试了那里的方法,但它对我不起作用。另外,当我检查我写的字符串的长度时,即使它们相同,它们也不匹配。如果你能帮助我,我将不胜感激。

使用 textBox1.ToString() 将生成类似于 "System.Windows.Controls.TextBox: TextBox" 的内容 - 它将创建控件类型的字符串。

您应该使用 textBox1.Text 来获取文本框的实际内容 - 它是一个字符串,因此不需要转换。

根据 PeterBruins 的评论,使用 .Contains(textBox1.Text, StringComparer.CurrentCultureIgnoreCase) 比转换为小写更好。

您可以在不使用 if 语句的情况下简化 Visible 属性 的设置:

item.Visible = item.Cells[2].Value.ToString().Contains(textBox1.Text,
                             StringComparer.CurrentCultureIgnoreCase);