Nur Zahlen in TextBox



  • Hallo zusammen,

    ich habe vo kurzem mit c++ angefangen und bin jetzt auf ein Problem gestoßen:
    ==>Ich will die möglichen Zeichen bei der Eingabe in eine Textbox auf Zahlen und ein Komma eingrenzen. (0-9,",")

    Es geht um eine Windows Forms-Anwendung.

    Habe mir schon Gedanken über eine Funktion gemacht, bin aber nicht wirklich weitergekommen.

    Ich hoffe, ihr könnt mir helfen 🙂

    Mfg, watson



  • Schau' mal in die Toolbox. Da gibt es eine vielversprechende Komponente "MaskedTextBox". Da gibt es eine Property Mask.



  • ok, habe jetzt eine MaskedTextBox gemacht.

    Aber welche Maske brauche ich?

    Es sollen eben nur 0-9 und "," als Zeichen möglich sein.

    Mfg, watson



  • Was willst Du eigentlich genau eingeben? Eine Fließkommazahl? Wenn die Digits fest vergeben werden können, kannst Du einfach eine Maske definieren:
    9999.99 => __, (Eine Zahl mit 4 STellen vor, zwei Stellen nach dem Komma)
    Der Benutzer könnte nun beispielsweise 10,4 eingeben: __10,4_ .
    Wenn Dir das zu unflexibel ist, kannst Du MaskedTextBox::ValidatingType verwenden

    maskedTextBox1.ValidatingType = typeof(System.Double);
    

    und dann das TypeValidationCompleted Event implementieren (=>Doku).
    Wenn Du eine freie Positionierung brauchst 0677,567567,78,987,,987879, musst Du eben wirklich jedes Zeichen in einer Schleife abprüfen.



  • ok, habe eine funktion geschrieben:

    //Nur bestimmt Zeichen in TextBox erlauben
    double just_digits(String string) {
        int string_length = length(string);
        double just_digits;
    
        for(int index=0; index<=string_length-1; index++)
        {
            if(IsDigit(string[index]) || string[index] == ","){just_digits += System::Convert::ToDouble(string[index]);}
            //IsDigit(string, index)
        }
    
        return just_digits;
    }
    

    Funktioniert nur leider nicht.

    1. Wie kann ich alle Zeichen eines Strings nacheinander in ein Array einlesen.
    2. Was muss ich für IsDigit() und length() includen?

    Mfg, watson



  • *push* - Das ist wirklich wichtig.

    Ich brauche eure Hilfe 🙂

    Mfg, Watson.


Anmelden zum Antworten