C#如何检查列表框中的字符串+;对象

C#如何检查列表框中的字符串+;对象,c#,search,combobox,listbox,contains,C#,Search,Combobox,Listbox,Contains,我试图在一个列表框中搜索一个特定的数字(对象),它与一个字符串一起出现,以便突出显示它。在下面的代码中,我重写了一个ToString()方法来包含我的所有对象 public override string ToString() { string reservatiestring; reservatiestring = "Kamer: " + roomNumber + "" + " Op datum:

我试图在一个列表框中搜索一个特定的数字(对象),它与一个字符串一起出现,以便突出显示它。在下面的代码中,我重写了一个ToString()方法来包含我的所有对象

 public override string ToString()
    {

        string reservatiestring;
        reservatiestring = "Kamer: " + roomNumber + "" + "  Op datum: " + datum + "  Aantal personen: " + personen.Count + "  Naam: " + reservatienaam;
        return reservatiestring;
    }
接下来,我用以下代码将其添加到我的列表框中:

 listBox1.Items.Add(reservatie.ToString());
现在我想搜索列表框中包含相同roomNumber对象的所有项目。为此,我尝试了Contains()方法,前面有文本:“Kamer:”和我要查找的对象+comboBox1.SelectedItem。然而,这总是失败,我的代码转到else选项,给出错误消息

private void buttonSearch_Click(object sender, EventArgs e)
    {
        listBox1.SelectionMode = SelectionMode.MultiExtended;
        Reservations reservaties = new Reservations();

        reservaties.roomnumberstring = "Kamer: " + comboBox1.SelectedValue;

        for (int i = listBox1.Items.Count - 1; i >= 0; i--)
        {
            if (listBox1.Items[i].ToString().ToLower().Contains(("Kamer: " + comboBox1.SelectedValue)))
            {
                listBox1.SetSelected(i, true);
            }
            else
            {
                MessageBox.Show("error");
            }
        
请注意:所有我的roomNumber对象都存储在combobox中,因此每当我在我的combobox中选择例如roomNumber 3并点击search时,列表框中包含“Kamer:3”的所有项目都应被选中

roomnumberstring是我尝试过的一个选项,但不幸的是它没有起作用

reservaties.roomnumberstring = "Kamer: " + comboBox1.SelectedValue;

您对ToString方法的重写是错误的,不会修改任何内容。试试这个:

public override string ToString(this string reservatiestring)
{

    reservatiestring = "Kamer: " + roomNumber + "" + "  Op datum: " + datum + "  Aantal personen: " + personen.Count + "  Naam: " + reservatienaam;
    return reservatiestring;
}

我发现有一件事可能会让你的代码失败。你在比较

.ToLower()

使用“Kamer”,其中“K”不是小写的

谢谢您的注释,我将实现它,但是这并不能解决我在搜索“Kamer:+roomNumber”部分时遇到的问题。当然还有字符串:“ReservatiesString”包含更多在比较中找不到的非小写字符。这确实解决了它转到我的错误消息的原因。谢谢。但是,列表框中包含我在组合框中选择的号码的所有我的项目现在倾向于被选择,而不是仅包含特定Kamer+combobox1.selecteditem的项目。因此,如果我现在在组合框中搜索示例2,则日期中包含2的所有项目现在也会被选中,而不仅仅是包含“Kamer:2”的项目。在“if”行设置一个断点,并检查combobox.SelectedValue是什么,并将其与值“i”进行比较,对每个项目循环执行此操作,并比较它们以了解为什么为“i”每次与所选值进行比较时均为真对不起,如果我现在不想提供更好的帮助,我没有开发人员工具。。只是想把你推向正确的方向,希望它能帮助你,而不是在你的列表框中添加一个字符串,而是添加你的类的实际实例。它将使用ToString()表示法显示在列表框中。您可以将列表框中的条目强制转换为您的类类型,并访问其所有成员。。。