Zahlen addieren sich miteinander

  • VB.NET

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

    Jimpo schrieb:

    ob ich einfach Schulprojekte veröffentlichen darf
    Klär das mit Deinem Lehrer, er selbst und Deine Mitschüler profitieren doch auch davon.
    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!

    Jimpo schrieb:

    Ich werde sicherlich nicht das letzte mal etwas in diesem Forum posten
    Da bin ich echt froh, weil ich finds immer recht schade, wenn wir mit unserm "schlechten Benehmen" mal wieder einen Programmier-Interessierten vergrault haben.

    Jimpo schrieb:

    Ich kann in die "Eingabetextbox" nichts eingeben, weil dort nur zahlen erlaubt sind.
    Kann man dort Kommata eingeben? (für Fliesskomma-Zahlen)

    Und wenn ja, könnte man da auch mehrere Kommata eingeben (und dadurch einen Fehler provozieren)?

    Es ist nämlich sehr schwierig, eine Textbox oder eine Maskedtextbox oder ähnliches so hinzukriegen, dass dort idiotensicher gewährleistet ist, dass nur Zahlen möglich sind.
    (Deshalb wurde dir auch zu NumericUpdown geraten, das ist ein fertiges Control, was in dieser Hinsicht 100% zuverlässig ist.)
    @ErfinderDesRades

    Nein, man kann maximal nur 1 Komma benutzen und dass auch nur erst wenn schon mindestens eine Zahl eingegeben wurde.
    Mein TR ist soweit wirklich idiotensicher.

    VB.NET-Quellcode

    1. Private Sub ergebnis_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ergebnis.KeyPress
    2. If ergebnis.Text.Contains(",") = False And Not ergebnis.TextLength = 0 Then
    3. Select Case Asc(e.KeyChar)
    4. Case 44
    5. Case Else
    6. e.Handled = True
    7. End Select
    8. Else
    9. Select Case Asc(e.KeyChar)
    10. Case Else
    11. e.Handled = True
    12. End Select
    13. End If
    14. End Sub




    also ich gehe mal davon aus, dass Kommata, Komma bedeutet.


    MfG
    Hi Jimpo,

    du kannst das auch so schreiben, insbesondere Copy&Paste unterbinden

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub TextBox1_Enter(sender As Object, e As System.EventArgs) Handles TextBox1.Enter
    3. 'Copy&Paste unterbinden
    4. Clipboard.Clear()
    5. End Sub
    6. Private Sub TextBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    7. If e.KeyChar = ","c Then
    8. 'nur 1 Komma
    9. e.Handled = (CType(sender, TextBox).Text.IndexOf(","c) <> -1)
    10. ElseIf e.KeyChar = "E"c Then
    11. 'zb. E erlauben
    12. e.Handled = (CType(sender, TextBox).Text.IndexOf("E"c) <> -1)
    13. 'Backspace erlauben
    14. ElseIf e.KeyChar <> ControlChars.Back Then
    15. e.Handled = ("0123456789AaEe".IndexOf(e.KeyChar) = -1) '<--erlaubt
    16. End If
    17. End Sub
    18. End Class

    ErfinderDesRades schrieb:

    Hmm - finde ich ja nicht nett, dass eine Anwendung mir mein Clipboard entleert.


    als Programmierer sollte/darf mann nicht nett sein X(

    aber ich kann auch nett sein...

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    2. Me.TextBox1.ShortcutsEnabled = False
    3. End Sub

    Kasi schrieb:

    als Programmierer sollte/darf mann nicht nett sein
    Ich daef keine fremden Programme sabotieren.
    Als Beispiel sage ich immer: Du musst nebnenbei ein Word-Dokument oder ne Excel-Tabelle schreiben können, das darf sich nicht behaken.
    Ich bin da beim @ErfinderDesRades , das Clipboard darf nicht einfach so gelöscht werden, das lässt sich in der WndProc ganz einfach unterbinden:

    C#-Quellcode

    1. /// <summary>
    2. /// Pauschal C&amp;P verhindern
    3. /// </summary>
    4. /// <param name="m"></param>
    5. protected override void WndProc(ref System.Windows.Forms.Message m)
    6. {
    7. const int WM_PASTE = 0x0302;
    8. if (m.Msg == WM_PASTE)
    9. {
    10. // C&P verhindern
    11. return;
    12. }
    13. base.WndProc(ref m);
    14. }
    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!