[gelöst] nur Zahlen in Textbox?



  • Hi

    ich habe eine kleine frage. ich möchte den Benutzer ein Eingabefeld zur Verfügung stellen. in diesen kann der dann eine Zahl eingeben. Am besten eine Fließkommazahl. jetzt gibt es aber Benutzer, ihr kennt das sicherlich, die Wissen nicht das man Buchstaben keine Ziffern sind. Dann gibt es Benutzer die geben Zahlen mit Komma ein und es gibt welche die geben sie mit Punkt ein. Sicherlich gibt es durch den UNI-CODE auch Zahlen an die ich noch garnicht gedacht habe.

    Um in eine Eingabe nur gültige Zeichen zuzulassen habe ich diesen Progammschnippsel geschrieben.

    private: System::Void tb_Zahl_TextChanged(System::Object^  sender, System::EventArgs^  e) 
    		 {
    			 String^ t = tb_Prüfername->Text;
    			 t+="x";
    			 array<wchar_t>^ c = t->ToCharArray(0,t->Length-1);
    			 for (int i=0; (i<c->Length) ;i++)
    			 {
    				 if (Chartest(c[i])==false)
    				 {
    					 c[i]='x';
    				 }
    			 }
    			 String^ s = gcnew String(c);
    			 s=s->Replace("x","");
    			 tb_Prüfername->Text=s;
    		 }
    		 bool Chartest(wchar_t test)
    		 {
    			 array<wchar_t>^ z = {'0','1','2','3','4','5','6','7','8','9',',','.'};
    			 for each (wchar_t x in z)
    			 {
    				 if (test == x)
    					 return(true);
    			 }
    			 return(false);
    		 }
    

    Da habe ich immer noch das Problem, das ein Benutzer 2 Komma oder Punkte eingeben kann. Die Umwandlung in eine Fließkommazahl schlägt dann fehl. Außerdem scheint die Umwandlung aus den .NET auch noch die länderspezifischen Dinge wie Komma und Punkt zu berücksichtigen 😞

    Gibt es eine einfache Methode/Möglichkeit um nur gültige Zahlen in der Text zuzulassen? oder muss ich mir das selber schreiben?



  • Hi, unter Char:: müsstest du eine Methode isPunctuation finden. Ausserdem gibts es für deinen Fall auch isLetter bzw isDigit.

    Ich denke das beantwortet deine Frage.

    PS: Es gibt sonst auch noch eine maskedTextBox. Kannst du dir ja mal anschauen. Ich habs aber eigentlich immer mit ner normalen TextBox und obigen Funktionen gehandhabt.

    PPS: Falls du die Textbox öfters benötigts, kannst du ja ne eigene Interpretation mittels Vererbung entwerfen...



  • Hi.

    Benutze doch einfach eine maskedTextbox und gib bei Mask 00000... ein (... <- so viele Stellen wie du willst) oder
    Char::IsDigit <- Da wird dir gehoflen 😃



  • super ich danke euch. Manchmal sieht man den Wald vor lauter bäumen nicht 🙂


Anmelden zum Antworten