【问题标题】:C# How to check a Listbox for a string + object?C#如何检查列表框中的字符串+对象?
【发布时间】:2017-06-06 14:13:11
【问题描述】:

我正在尝试在列表框中搜索某个数字(对象),该列表框中与一个字符串一起以突出显示它。在下面的代码中,我重写了一个 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 对象都存储在组合框中,因此每当我在组合框中选择例如 roomNumber 3 并点击搜索时,应选择列表框中包含“Kamer: 3”的所有项目。

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

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

【问题讨论】:

  • 不是将字符串添加到您的列表框,而是添加您的类的实际实例。它将使用 ToString() 表示形式显示在 ListBox 中。您可以将 ListBox 中的条目转换为您的类类型并访问其所有成员...

标签: c# search combobox listbox contains


【解决方案1】:

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

public override string ToString(this string reservatiestring)
{

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

【讨论】:

  • 感谢您的注意,执行不当,但是当我尝试搜索“Kamer:” + roomNumber 部分时,这并不能解决我的问题。
【解决方案2】:

我可以看到一件事可能会使您的代码失败。你在比较

.ToLower()

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

【讨论】:

  • 当然还有字符串:“reservatiestring”包含更多在比较中找不到的非小写字符
  • 这确实解决了它不断出现在我的错误消息中的原因,谢谢。然而,我在列表框中包含我在组合框中选择的数字的所有项目现在都倾向于被选中,而不仅仅是包含特定 Kamer + combobox1.selecteditem 的项目。因此,如果我现在在组合框中搜索示例 2,则日期中包含 2 的所有项目现在也会被选中,而不仅仅是包含“Kamer:2”的项目
  • 在 "if" 行设置断点并检查 comboBox.SelectedValue 是什么并将其与 "i" 的值进行比较,对每个循环执行此操作并比较它们以了解原因每次与所选值进行比较时,“i”都为真
  • 抱歉,如果我现在不能提供更好的帮助,我现在没有开发人员工具.. 只是想把你推向正确的方向,希望对您有所帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-19
  • 2014-11-06
  • 1970-01-01
相关资源
最近更新 更多