Rechnen mit TextBox und CheckBox

  • VB.NET

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

    Rechnen mit TextBox und CheckBox

    Ich versuche aktuell die Logik der Mathematik in VB2008 zu lernen.

    Ich habe 3 TextBoxen:

    1. Rechnungsbetrag
    2. Einzahlung
    3. Differenz

    Nun möchte ich in (Rechungsbetrag) einen Wert (zB, 10,00€) eingeben. In der (Differenz) möchte ich nun den Betrag zwischen Rechnungsbetrag & Einzahlung stehen haben.


    Soweit mein Code....

    VB.NET-Quellcode

    1. Private Sub Differenz_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Differenz.TextChanged
    2. Differenz.Text = CInt(Einzahlung.Text) - CInt(Rechnungsbetrag.Text)
    3. End Sub



    Ps. Vielleicht könnte mir auch jemand sekundär noch erklären, wie ich das "€" zeichen in die TextBox bekommen und wie Geldbetrage automatisch erkannt werden...

    Bsp:

    1 = 1,00 €
    50 = 50,00 €
    1000 = 1.000,00 €
    Option Strict On

    VB.NET-Quellcode

    1. Differenz.Text = (CInt(Einzahlung.Text) - CInt(Rechnungsbetrag.Text)).ToString("C")
    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!

    LERNT_NOCH schrieb:

    "Ungültige Konvertierung von der Zeichenfolge in Typ Integer."

    Dann hast Du was falsch in Deine Textboxen eingegeben.
    Probier zunächst dies:

    VB.NET-Quellcode

    1. Dim Einzahlung As Double = 12345.5
    2. Dim Rechnungsbetrag As Double = 123.45
    3. MessageBox.Show((Einzahlung - Rechnungsbetrag).ToString("C"))
    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!
    Ich hab´s nun mit

    VB.NET-Quellcode

    1. Private Sub Rechnungsbetrag_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Rechnungsbetrag.TextChanged
    2. Differenz.Text = (CInt(Einzahlung.Text) - CInt(Rechnungsbetrag.Text)).ToString("C")
    3. End Sub


    probiert, funktioniert leider nach wie vor nicht! Woran könnte es denn liegen?

    Edit by Manschula: Für Code-Ausschnitte den entsprechenden Tag verwenden! --> VB-Tag eingefügt

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

    Wie sehen denn diese Strings aus?
    Einzahlung.Text
    Rechnungsbetrag.Text
    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!
    Junge, lass Dir nicht jede Information aus der Nase ziehen.
    Ich hab Code von Dir abgeschrieben, eine öffnende und eine schließende Klammer drum herum gesetzt und ein .ToString ("C") dran gehängt.
    Also:
    Was läuft nicht?
    Diesmal bitte so viel Information, dass ich Dir mit einem Post helfen kann.
    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!
    Diesmal bitte so viel Information, dass ich Dir mit einem Post helfen kann.


    Es funktioniert jetzt soweit, nun hätte ich aber gerne, dass die TextBoxen automatisch erkennen, wenn ich zB.

    12 eingebe, dass 12,00 € erscheint.....
    12,34 eingebe, dass 12,34 € erscheint.....
    ,5 eingebe, dass 00,50€ erscheint.....


    Wie ist das denn möglich?
    Da musst Du das KeyDown-Event der TextBox ausfüllen und ihm genau das sagen.
    Teste zunächst die KeyCodes und erlaube nur Ziffern, Komma, Del, BackSpace, Cursor.
    Hole Dir sden Text, wandle ihn in ein Double um und gib den formatierten Text aus.
    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!

    LERNT_NOCH schrieb:

    Ich versuche aktuell die Logik der Mathematik in VB2008 zu lernen.

    eine "Logik der Mathematik in VB2008" gibt es nicht.
    Du solltest vlt. ühaupt Logik erlernen, dann wüsstest du: Mathematik funktioniert mit Zahlen.
    • Nicht mit Textboxen
    • und auch nicht mit Strings.


    LERNT_NOCH schrieb:

    Es funktioniert jetzt soweit, nun hätte ich aber gerne, dass die TextBoxen automatisch erkennen, wenn ich zB.

    12 eingebe, dass 12,00 € erscheint.....
    12,34 eingebe, dass 12,34 € erscheint.....
    ,5 eingebe, dass 00,50€ erscheint.....

    eine Textbox "erkennt auch nix automatisch".
    Was du ansprichst, betrifft die Darstellung von Zahlen (Stichwort: "Formatierung"). Da gibts durchaus die Möglichkeit, Zahlen auch als Währung darzustellen.
    Aber sowas kann man besser bei einer datengebundenen Textbox einstellen.

    Also mach lieber ein Label hinter die Textbox, mit Aufschrift "€" und gut ist.

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

    Meine TextBoxen lassen nun nur noch Zahlen zu, aber dass diese in € umgewandelt werden, habe ich bisweilen nicht geschafft....

    vlt kann man das ja an den Code anknüpfen...

    VB.NET-Quellcode

    1. Private Sub Rechnungsbetrag_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Rechnungsbetrag.TextChanged
    2. If Not IsNumeric(Rechnungsbetrag.Text) Then
    3. Rechnungsbetrag.ResetText()
    4. End If
    Was wäre denn ein beispiel für eine datengebundene TextBox?
    najaaa - da müssteman etwas weiter ausholen.

    ZB auf [VB 2008] DBExtensions, im Sample "DatasetOnly" gibts eine "EinzelpreisTextbox", bei der könnte man im Designer das Binding auf Währung festlegen:
    Bilder
    • SwEntwicklerShots15.Png

      61,27 kB, 847×543, 121 mal angesehen

    LERNT_NOCH schrieb:

    Was wäre denn ein beispiel für eine datengebundene TextBox?

    Für Dich genügen wohl kleinere Brötchen und lies Dir meinen letzten Post durch.

    VB.NET-Quellcode

    1. Private Sub TextBox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
    2. Select Case e.KeyCode
    3. Case Keys.D0 To Keys.D9
    4. ' abarbeiten
    5. Case Keys.Back
    6. ' abarbeiten
    7. Case Else
    8. ' raus
    9. Return
    10. End Select
    11. ' was tun
    12. End Sub
    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!