ComboBox - Objekte aus Liste benennen

  • VB.NET
  • .NET 4.5

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    ComboBox - Objekte aus Liste benennen

    Gelöst, Lösung unten für alle die interessiert sind.
    Hallo an Alle ^^

    Ich bin noch nicht ganz so erfahren in VB und bin bei einer Aufgabe leider am Ende mit Ideen, ich hoffe es findet hier jemanden der mir helfen mag/kann.

    Kurz vorab: Ich habe eine Klasse CKonto erstellt, in dieser wird geregelt was beim erstellen eines neuen Kontos so passieren soll.
    In der Main-Klasse habe ich damit begonnen 3 Konten zu erzeugen.

    VB.NET-Quellcode

    1. Dim Konto1 As New CKonto(1234, "Else", 500, 600)
    2. Dim Konto2 As New CKonto(5678, "Peter", 700, 600)
    3. Dim Konto3 As New CKonto(9101, "Gerd", 800, 600)

    Da übergebe ich dann Kontonummer, Name, Dispo und Saldo des Kontos.
    Desweiteren habe ich auch eine Liste erstellt.

    VB.NET-Quellcode

    1. Dim Kontoliste As New List(Of CKonto)


    Wenn das Form lädt wird der Kontoliste die Konten hinzugefügt und der combobox übergeben.

    VB.NET-Quellcode

    1. Kontoliste.Add(Konto1)
    2. Kontoliste.Add(Konto2)
    3. Kontoliste.Add(Konto3)
    4. cboClient.DataSource = Kontoliste


    Soweit so gut. Das funktioniert auch alles wirklich super mit dem Rest des Codes. Rechnen funktioniert auch, also Geld Abheben und Einzahlen.
    Ich arbeite dabei mit

    VB.NET-Quellcode

    1. .SelectedIndex
    Es sind nur drei Konten deswegen kann man dabei auch nicht durcheinander kommen.

    Was ich doch nun gerne wissen wollen würde:
    Gibt es irgendwie die Möglichkeit, dass in meiner ComboBox die Nummer des Kontos angezeigt wird?
    Zuvor habe ich die einzelnen Konten so hinzugefügt:

    VB.NET-Quellcode

    1. cboClient.Items.Add(Konto1.Nummer)
    2. cboClient.Items.Add(Konto2.Nummer)
    3. cboClient.Items.Add(Konto3.Nummer)

    Also ohne eine Liste zu verwenden, nur es ist Teil der Aufgabe, dass ich eine Liste verwende.
    Gibt es überhaupt die Möglichkeit die Nummer auf dieser Art und Weise anzuzeigen?
    Ich hatte in anderen Beiträgen

    VB.NET-Quellcode

    1. cboClient.DisplayMember
    gefunden, aber das funktioniert irgendwie nicht. ?(
    Hat jemand vielleicht noch einen Lösungsansatz?

    Vielen Dank schon mal im Vorraus.

    Ich wünsche allen noch einen schönen Abend,

    Muffin0o

    EDIT:
    Ein Bekannter hat mir die Lösung gebracht, für alle die es eventuell noch interessiert: In der Klasse für die Konten hatte ich folgende Daten deklariert.

    VB.NET-Quellcode

    1. Private pNummer As IntegerPrivate pInhaber As StringPrivate pSaldo As IntegerPrivate pDispo As IntegerPrivate pmax As Integer = 500
    'pNummer' ist das was angezeigt werden soll.

    VB.NET-Quellcode

    1. Public Overrides Function ToString() As StringReturn pNummer.ToString()End Function
    Das ist die Lösung.. o-o

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Muffin0o“ ()

    Wenn Dir Deine Lösung zusagt, ok. Um die Frage mit dem Display-Member zu beantworten, musst Du die Variable des Kontoinhabernamens (pInhaber) als Public Property definieren. Dann noch diese beiden Zeilen und dann läuft's:

    VB.NET-Quellcode

    1. cboClient.DataSource = Kontoliste
    2. cboClient.DisplayMember = "pInhaber"
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Willkommen im Forum. :thumbup:

    Muffin0o schrieb:

    für alle die es eventuell noch interessiert
    Das Interesse an Deinem Code wäre größer, wenn mach ihn als solchen erkennt.
    Dazu ist eine ordentliche Formatierung erforderlich, füge also in Deinem Code die richtigen Zeilenschaltungen ein. ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!