Entwickler-Ecke
WinForms - Text zu einer TextBox hinzufügen verursacht StackOverflow
erfahrener Neuling - Mo 21.03.16 14:34
Titel: Text zu einer TextBox hinzufügen verursacht StackOverflow
Hallo,
ich wollte bei Eingabe von Text in eine Textbox per textChanged Event die Eingabe durch ein Sternchen ersetzen (Passwort Eingabe). Allerdings passiert, wenn ich einen Buchstaben eingebe, für kurze Zeit nichts, gefolgt von einer StackOverflowException. Die Sternchen füge ich durch einen StringBuilder hinzu
Code:
C#-Quelltext
1: 2: 3: 4: 5:
| private void textBoxPassword_TextChanged(object sender,EventArgs e) { this.passwordText += Convert.ToString(this.textBoxPassword.Text[this.textBoxPassword.Text.Length-1]); this.textBoxPassword.Text = new StringBuilder().Insert(0,"*", passwordText.Length).ToString(); } |
Das Kuriose ist, wenn ich
this.textBoxPassword.Text = "..." mache, kommt auch ein StackOverflow.
Was ist da schon wieder los?
Anmerkung: Ich wei0 nicht ob es wichtig ist, aber die Textbox verfügt über 2 textChanged-Events, aber daran kann's ja (eigentlich) nicht liegen
frankyboy1974 - Mo 21.03.16 14:50
hallo,
wie kann man ganz leicht eine StackOverflowException erreichen?
Indem man eine Funktion schreibt die sich (unendlich oft) wieder selbst aufruft. Irgendwann ist der Stack dann voll und es kommt besagte Fehlermeldung.
Dein Insert ruft also wiederum das Onchange auf, dort wird wieder ein insert aufgerufen, was wiederum das Onchange aufruft, und so weiter.
Ich weiss nicht wie das in C# ist, aber viele Programmiersprachen haben ein 'Password-Char', das man bei einem Editfeld angeben kann. Dann erfolgt das ersetzen automatisch und braucht nicht eigens programmiert werden.
mfg
erfahrener Neuling - Mo 21.03.16 14:54
Zitat: |
wie kann man ganz leicht eine StackOverflowException erreichen?
Indem man eine Funktion schreibt die sich (unendlich oft) wieder selbst aufruft. Irgendwann ist der Stack dann voll und es kommt besagte Fehlermeldung. |
Na klar, wie konnt ich das nur übersehen. Ja das ist natürlich blöd gelaufen :) Aber danke für den Tipp, werd ich mal nach gucken
Ralf Jansen - Mo 21.03.16 14:57
Die gesuchte Property der TexBox ist PasswordChar. Oder besser UseSystemPasswordChar dann bekommst du das systemabhängige passende Zeichen(unter aktuellen Windows Version also einen fetten Punkt und keinen Stern).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!