C# Textbox - Jeder Buchstabe nur einmal erhalten

eightcore

Lt. Commander
🎅Rätsel-Elite ’24
Registriert
Juli 2008
Beiträge
1.676
Guten Tag.

Ich habe eine Textbox erstellt, wo man Buchstaben, Leerschläge und Kommas eingeben kann (nur diese Zeichen sind erlaubt, der Rest kann gar nicht reingeschrieben werden.

Nun möchte ich, dass jeder Buchstabe nur einmal eingegeben werden kann.
Wenn z.B. "A" schon in der Textbox vorhanden ist, darf kein weiteres "A" oder "a" mehr reingeschrieben werden können.

Ich habe es schon mit einem Charcounter versucht zu erreichen, was aber nicht funktioniert hat. Hat jemand eine Idee?


MfG | eightcore
 
eine Möglichkeit wäre, dass du mit StringName.contains(Char) überprüfst ob dieser schon vorhanden ist bei einem KeyDownEvent.

wenn du verhindern willst, dass zahlen und sonderzeichen eingegeben werden können, solltest du dir mal die SurpressKeyPress-Methode des KeyEventArgs Parameters
 
Code:
public void TextBox1_OnKeyPress( KeyPressEventArgs e )
{
  e.Handled = TextBox1.ToLower().IndexOf( new string( new char[] { e.KeyChar } ).ToLower()[0] ) != -1;
}
Weiß jetzt nur nicht ob e.Handled = true oder false richtig ist. Weiß grad nicht, ob es auch einfacher geht, das Zeichen in LowerCase zu konvertieren, daher einfach mal der Weg. ;)
 
Zuletzt bearbeitet:
Black_Panter schrieb:
wenn du verhindern willst, dass zahlen und sonderzeichen eingegeben werden können, solltest du dir mal die SurpressKeyPress-Methode des KeyEventArgs Parameters

Wenn man genau liest, merkt man, dass ich die Eingabebeschränkung schon gemacht habe.

Black_Panter schrieb:
eine Möglichkeit wäre, dass du mit StringName.contains(Char) überprüfst ob dieser schon vorhanden ist bei einem KeyDownEvent.

Funktioniert! Danke vielmals!

So siehts jetzt aus:
if ("aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ".Contains(e.KeyChar.ToString()) | tPanel2Letters.Text.Contains(e.KeyChar.ToString()))

{
e.handled = true
}

@ Black_Panther:

e.Handled entscheidet, ob der Tastendruck als abgeschlossen gilt oder nicht (er wird dann nicht mehr weitergeleitet).
e.SuppressKeyPress unterdrückt den Tastendruck. Ist also eigentlich dasselbe.
 
Zuletzt bearbeitet:
Zurück
Oben