Zeichenfolge abfragen



  • Hallo,

    in meiner Anwendung habe ich eine ComboBox. Diese ist an eine DB-Tabelle gebunden, um meine Einträge mit der AutoComplete Funktion zu vervollständigen. Das klappt so weit auch prima.

    Nun ist es aber so, dass ich meine ComboBox mit zwei Werten fülle:

    cbxArtikelID.Items.Add(reader.GetString(0) + "  " + reader.GetString(1));
    

    Das erste ist die ArtikelNr und das zweite die Bezeichnung und sieht angezeigt etwa so aus: "0001.005 Schlagbohrer"

    Mit dem ausgewählten Eintrag soll dann auf das nächste Formular verwiesen werden, d.h. die ArtikelNr wird "global" weitergeben.

    Da liegt nun aber mein Problem: Um nur mit der ArtikelNr weiter arbeiten zu können, muss ich die Zeichenfolge (0001.005 Schlagbohrer) so abschneiden, dass ich nur die Zahlen habe (=ArtikelNr).
    Wie kann ich Zeichenfolgen ermitteln, in diesem Fall bis zum ersten Leerzeichen?

    Oder gibt es sonst eine Möglichkeit, dass ich auf die ausgewählte ArtikelNr zugriefen/weiterverarbeiten kann??

    Ich hoffe mein Problem ist einigermaßen verständlich...

    Danke



  • Die String-Methoden 'Substring' oder 'Split' sind hierfür geeignet.



  • Also ich finde es immer unschön, daten irgendwo für die Darstellung zu einem Label umzuformen um sie dann später wieder zu Daten zu machen.
    Ich habe bisher oft, auch wenn das nicht schön sein mag, Datenstrukturen zu TreeNodes, ListItems, (ComboBoxItems) in deren Tag-Attribut gespeichert. Das ist vom Typ object und daran kannst du alles hängen was du willst.

    Am einfachsten wäre es in deinem Fall, einfach den String mit der Artikelnummer dranzuhängen.

    Wie gesagt, ich weiß nicht genau, ob das dafür gedacht ist, es hat mir aber schon sehr oft einiges an Arbeit erspart. Und dafür ist C# mit .Net ja schließlich da.

    Tobi



  • Du könntest auch das komplette Objekt an die Items-Collection anhängen, wenn die Klasse eine geeignete ToString-Methode besitzt.



  • Ich habe folgendes versucht:

    while (reader.Read())
    {
        cbxUser.Items.Add(reader.GetString(0) + " " + reader.GetString(1));
        cbxUser.ValueMember = reader.GetValue(0).ToString();
    }
    

    und dann habe ich beim Click Ereignis eines Buttons folgendes:

    label2.Text = cbxUser.SelectedValue.ToString();
    

    Allerdings kommt dann, wenn ich dem Label den Wert zuweisen möchte immer die Fehlermeldung einer NullReferenceException... und das obwohl in der ComboBox ein Wert ausgewählt ist.

    Was muß ich machen, damit ich den Wert erhalte?


Anmelden zum Antworten