2017-01-21 3 views
0

Ich versuche nach einer bestimmten Nummer (Objekt) in einer Listbox zu suchen, die zusammen mit einer Zeichenkette kommt, um sie hervorzuheben. Im folgenden Bit Code überschreibe ich eine ToString() -Methode, um alle meine Objekte zu enthalten.C# Wie überprüfe ich ein Listbox für einen String + Objekt?

public override string ToString() 
    { 

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

Anschließend ich es meinem Listbox im folgenden Stück Code hinzufügen:

listBox1.Items.Add(reservatie.ToString()); 

Ich möchte jetzt für alle Einzelteile in meinem listbox suchen Objekt denselben Zimmernummer enthält. Um dies zu tun, versuchte ich die Contains() -Methode mit dem Text davor: "Kamer::" und das Objekt, das ich suche nach + comboBox1.SelectedItem. Dies schlägt jedoch immer fehl und mein Code geht an die else-Option, die mir die Fehlermeldung gibt.

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"); 
      } 

Bitte beachten Sie: Alle meine Zimmernummer-Objekte werden in der Combobox gespeichert, so, wenn ich zum Beispiel Zimmernummer 3 in meiner Combobox wählen und schlug alle Elemente in der List-Box suchen mit „Kamer: 3“ gewählt werden sollte.

Die roomnumberstring ist eine Option, die ich versuchte, die leider nicht funktioniert hat.

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

in Klein isn't einen String auf Ihre List-Box hinzuzufügen, fügen Sie die aktuelle Instanz der Klasse. Es wird in der ListBox mithilfe der ToString() - Darstellung angezeigt. Sie können die Einträge in der ListBox zu Ihrem Klassentyp umwandeln und auf alle seine Mitglieder zugreifen ... –

Antwort

0

Ihre Überschreibung der ToString-Methode ist falsch und wird nichts ändern. Versuchen Sie Folgendes:

public override string ToString(this string reservatiestring) 
{ 

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

Danke für die Notiz, schlecht umzusetzen, dies behebt jedoch mein Problem nicht, wenn ich nach der "Kamer:: +" suche roomNumber Teil. –

0

Ich kann eine Sache sehen, die Ihren Code zum Scheitern bringen könnte. Sie vergleichen

.ToLower() 

mit „Kamer“, wobei das „K“ Statt

+0

Auch die Zeichenfolge: "reservatiestring" enthält mehr von nicht-Kleinbuchstaben, die nicht im Vergleich gefunden werden –

+0

Dies hat den Grund, warum es ging zu meiner Fehlermeldung kontinuierlich danke Ihnen behoben. Allerdings werden jetzt alle meine Artikel in der Listbox ausgewählt, die die Nummer enthält, die ich in der Combobox ausgewählt habe, und nicht nur die Artikel, die das spezifische Kamer + combobox1.selecteitem enthalten. Wenn ich nun beispielsweise in der Combobox nach 2 suche, werden nun auch alle Elemente ausgewählt, die 2 im Datum enthalten und nicht nur die Elemente mit "Kamer: 2" –

+0

Setzen Sie einen Haltepunkt an die "if" Zeile und prüfen Sie, was die ComboBox ist. SelectedValue ist und vergleichen Sie es mit dem Wert von "i", tun Sie dies für jede Schleife durch die Elemente und vergleichen Sie sie, um zu sehen, warum "i" ist immer wahr, wenn Sie mit dem ausgewählten Wert –

Verwandte Themen