Inhalt in Listbox ausrichten?

  • VB.NET

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

    Inhalt in Listbox ausrichten?

    Hallo!

    ich bin komplett neu hier und lerne auch erst seit einigen Wochen das Programmieren mit VB in der Schule.
    Zur Zeit erstellen wir einen kleinen Verkaufspreis-Kalkulator, indem das Ergebnis verschiedener Rechnungen in einer Listbox ausgegeben werden müssen und mein Lehrer hat sich meinen Code angeschaut und möchte jetzt noch gerne als Zusatz, dass ich den Inhalt der Listbox rechtsbündig formatiere. Allerdings nicht den gesamten Inhalt, sonder mehr oder weniger nur die zweite Spalte.

    Hier ist der Code, den ich bisher habe:

    Quellcode

    1. Option Strict On
    2. Option Explicit On
    3. Public Class Form1
    4. Dim vBarVKP As Double
    5. Dim vSkontosatz As Double
    6. Dim vRabattsatz As Double
    7. Dim vListenVKP As Double
    8. Dim vZielVKP As Double
    9. Dim vSkontosatzAusgabe As Double
    10. Dim vRabattsatzAusgabe As Double
    11. Private Sub btnKalkulation_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnKalkulation.Click
    12. If txtBarVKP.Text = "" Or txtRabattsatz.Text = "" Or txtSkontosatz.Text = "" Then
    13. MessageBox.Show("Bitte füllen sie alle Felder aus!")
    14. Else
    15. 'Eingabe
    16. vBarVKP = Convert.ToDouble(txtBarVKP.Text)
    17. vSkontosatz = Convert.ToDouble(txtSkontosatz.Text)
    18. vRabattsatz = Convert.ToDouble(txtRabattsatz.Text)
    19. 'Verarbeitung
    20. vSkontosatzAusgabe = (vBarVKP / (100 - vSkontosatz)) * vSkontosatz
    21. ' ? Math.Round(vSkontosatzAusgabe, 2)
    22. vZielVKP = vBarVKP + vSkontosatzAusgabe
    23. ' ? Math.Round(vZielVKP, 2)
    24. vRabattsatzAusgabe = (vZielVKP / (100 - vRabattsatz)) * vRabattsatz
    25. ' ? Math.Round(vRabattsatzAusgabe, 2)
    26. vListenVKP = vZielVKP + vRabattsatzAusgabe
    27. 'Ausgabe
    28. lbxAusgabe.Items.Add("Bar-VKP" & ControlChars.Tab & ControlChars.Tab & vBarVKP.ToString("c"))
    29. lbxAusgabe.Items.Add("+ Skonto " & vSkontosatz & "%" & ControlChars.Tab & vSkontosatzAusgabe.ToString("c"))
    30. lbxAusgabe.Items.Add("Ziel-VKP" & ControlChars.Tab & ControlChars.Tab & vZielVKP.ToString("c"))
    31. lbxAusgabe.Items.Add("+ Rabatt " & vRabattsatz & "%" & ControlChars.Tab & vRabattsatzAusgabe.ToString("c"))
    32. lbxAusgabe.Items.Add("Listen-VKP" & ControlChars.Tab & vListenVKP.ToString("c"))
    33. lblAusgabeListenVKP.Text = vListenVKP.ToString("c")
    34. End If
    35. End Sub
    36. Private Sub btnBeenden_Click(sender As System.Object, e As System.EventArgs) Handles btnBeenden.Click
    37. Me.Close()
    38. End Sub
    39. Private Sub txtRabattsatz_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtRabattsatz.TextChanged
    40. AcceptButton = btnKalkulation
    41. End Sub
    42. End Class


    "Bar-VKP", "+Skonto ... %", "Ziel-VKP", "+ Rabatt ...%" und "Listen-VKP" sollen also linksbündig bleiben, wohin gegen das Ergebnis dahinter rechtsbündig an € ausgerichtet sein soll.

    Ich habe keine Ahnung, wie es gehen soll. Kommentar meines Lehrers war nur, dass ich das bestimmt bis zur nächsten Stunde hinkriege ?( Jetzt hab ich natürlich auch den Ehrgeiz, zu verstehen wie es geht. Leider hat weder Recherche im Buch, noch im Internet was gebracht. Das kann auch daran liegen, dass ich durch fehlendes Fachwissen mit falschem Suchtext gesucht habe. Auf jeden Fall fand ich nur Themen, bei denen als Antwort gesagt wurde, dass das mit Listbox nicht funktionieren würde. Ich muss aber explizit Listbox verwenden.

    Ich wäre über jede Hilfe dankbar!
    Es gibt die String.Format() Funktion.

    VB.NET-Quellcode

    1. String.Format("{0,10}", deintext)

    Damit wird deintext rechtsbündig ausgerichtet (10 Zeichen).

    Mal was anderes: Kannst du uns erklären was in dieser Zeile geschieht?:

    VB.NET-Quellcode

    1. AcceptButton = btnKalkulation
    Willkommen im Forum. :thumbup:
    Eine ListBox ist nicht dafür vorgesehen, Text formatiert auszugeben, jede Zeile ist da ein eigenes Item.
    Die Textbox hat ein Propertry TextAlign, die bietet allerdings nur Left, Center und Right für den gesamten Text, nicht aber für eine Zeile.
    Gäbe es einen Blocksatz, könntest Du mit Tabulatoren den Text nach außen schieben.
    Bei einer RichTextBox kommt solch ein Property gar nicht erst vor.
    Kann es sein, dass Euch Euer Lehrer aufs Glatteis führen will?
    Wie wäre es mit Aufteilung des Inhalts auf mehrere Controls?
    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).
    Programmierfragen über PN / Konversation werden ignoriert!
    Erstmal Danke für die Antworten! :)

    String.Format()-Funktion bringt mich jetzt gerade leider nicht weiter, das verwirrt mich nur extrem.


    markus.obi schrieb:

    Mal was anderes: Kannst du uns erklären was in dieser Zeile geschieht?:

    markus.obi schrieb:

    Visual Basic Quellcode
    AcceptButton = btnKalkulation
    Da hab ich nur dem Nachbarn etwas aus der letzten Stunde erklärt. Das war ein anderes Projekt und dort sollte Enter den Klick auf den 'Berechnen-Button' ersetzen. Hat mit dem jetzigen nichts zu tun und werde ich gleich rauslöschen.

    RodFromGermany schrieb:

    Willkommen im Forum.
    Eine ListBox ist nicht dafür vorgesehen, Text formatiert auszugeben, jede Zeile ist da ein eigenes Item.
    Die Textbox hat ein Propertry TextAlign, die bietet allerdings nur Left, Center und Right für den gesamten Text, nicht aber für eine Zeile.
    Dankeschön :D
    Ja, das hab ich auch einige Male im Internet gelesen und so wurde uns die Listbox im Unterricht auch erklärt. Ich glaube ich muss nocheinmal nachfragen. Verändern darf ich leider nichts. :thumbdown: Hab genaue Angaben, die besagen, dass der Rechenweg in einer Listbox angezeigt werden soll.

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

    Tardis schrieb:

    Hab genaue Angaben, die besagen
    Schade.
    Ich halte diese Zusatz-Aufgabenstellung für hirnrissig, wäre ich Lehrer, würde ich die verwendeten Controls freistellen, eigentlich sollte es genügen, die Programmiersprache vorzugeben.
    Gib mal dies bei Google ein: vb.net listbox text align.
    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).
    Programmierfragen über PN / Konversation werden ignoriert!