Entwickler-Ecke
WinForms - Keypress event
sepp_a_u - So 30.12.07 13:43
Titel: Keypress event
hi @ll
mache mir gerade einen kl. zinsrechner. der läuft jetzt auch einwandfrei. man kann nur noch zahlen eingeben und die eingabe von buchstaben ist unmöglich. jedoch bräuchte ich jetzt noch den befehl dazu, dass auch das "," und der "." zulässig sind für die eingabe. wie mache ich das?
folgenden code habe ich bisher verwendet, dass man nur noch zahlen eingeben kann in den 3 txtboxen (startkap, laufzeit in jahre, zinssatz):
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| private void txtStartkap_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar)) { e.Handled = true; } }
private void txtLaufzeit_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar)) { e.Handled = true; } }
private void txtZins_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar)) { e.Handled = true; } } |
damit jetzt komma und pkt zulässig sind, gibt es doch bestimmt auch einen solchen befehl. oder nicht? wäre nice, wenn mirwer helfen könnte
mfg
JüTho - So 30.12.07 14:14
Titel: Re: Keypress event
sepp_a_u hat folgendes geschrieben: |
damit jetzt komma und pkt zulässig sind, gibt es doch bestimmt auch einen solchen befehl. oder nicht? wäre nice, wenn mirwer helfen könnte |
Unmittelbar gibt es keine passenden Abfragen, weil die Char.IsXXX-Methoden
Gruppen von Unicode-Zeichen prüfen. Du kannst diese Zeichen aber direkt kontrollieren, wie es im Beispiel zur
KeyPressEventArgs.KeyChar-Eigenschaft vorgemacht wird:
C#-Quelltext
1: 2: 3: 4:
| if (e.KeyChar != (char)Keys.Decimal && e.KeyChar != (char)Keys.Separator) { e.Handled = true; } |
Ob Keys.Separator richtig ist, musst Du ausprobieren; sonst suche Dir etwas anderes aus der
Keys-Enumeration aus. Jürgen
sepp_a_u - So 30.12.07 14:33
hmm danke erstmal. aber der code funktioniert bei mir gar nicht. hab auch andere events außer dem separator ausprobiert. wenn ich den code dann einfüge, dann kann man gar nichts mehr in die txtfelder eingeben.
mfg
Kha - So 30.12.07 16:19
Auf die Idee mit der Keys-Enumeration wäre ich gar nicht gekommen, aber ein simpler Cast nach Char wird wohl nur Unfug ergeben. Wenn, dann über KeyDown/Up, dort gibt es nämlich mit e.KeyCode eine Keys-Eigenschaft.
Ansonsten eben über CultureInfo.CurrentCulture.NumberFormat.
sepp_a_u - So 30.12.07 18:14
hmm das sagt mir leider gar nichts :(
hast du dafür vll einen kommentierten bspcode oder?
wäre nice, damit ich wenigstens weiß, was du mir überhaupt sagen willlst :(
mfg
Kha - So 30.12.07 18:27
Mit Keys wird es doch nichts, bleib bei der Betrachtung von Chars. Und um Globalization würde ich mir auch keine Sorgen machen - prüfe einfach, ob KeyChar weder '.' noch ',' ist.
PS: Du musst den gleichen Code doch nicht dreimal schreiben. Verknüpfe die drei Events mit einer einzigen Methode über die Dropdownbox im Form-Designer.
sepp_a_u - So 30.12.07 19:36
Khabarakh hat folgendes geschrieben: |
Mit Keys wird es doch nichts, bleib bei der Betrachtung von Chars. Und um Globalization würde ich mir auch keine Sorgen machen - prüfe einfach, ob KeyChar weder '.' noch ',' ist.
PS: Du musst den gleichen Code doch nicht dreimal schreiben. Verknüpfe die drei Events mit einer einzigen Methode über die Dropdownbox im Form-Designer. |
hmm leider habe ich keien ahnung wie ich das mit der verknüpfung realisieren soll/muss, genauso wenig, wie ich das mit keychar machen muss mit dem pkt und komma. bin ja leider noch ein extremer anfänger :( wäre nice, wenn du mir da mal ein codebsp machen könntest
mfg
sepp_a_u - Fr 04.01.08 18:33
hmm kann mir keiner helfen? ;(
mfg
Christian S. - Fr 04.01.08 18:36
Wie hast Du denn versucht, die hier gegebenen Tipps umzusetzen? Zeig doch mal, wo Du bei der Umsetzung der Tipps nicht weiter kommst.
sepp_a_u - So 06.01.08 13:44
so habs jetzt endlch herausgefunden, wie ich es machen kann:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| private void txtStartkap_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { if (!(e.KeyChar == '.' || e.KeyChar == ',')) {
if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar)) { e.Handled = true; } } } |
was hält ihr von dem code? ist der sinnvoll oder eher nicht?
MfG
JüTho - So 06.01.08 14:02
Warum fragst Du eigentlich, ob ein Zeichen ein Steuerzeichen ist?
Was hältst Du von einer einzigen Abfrage:
C#-Quelltext
1: 2: 3: 4: 5:
| private void txtStartkap_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { if ( !(e.KeyChar == '.' || e.KeyChar == ',') && !Char.IsDigit(e.KeyChar) ) e.Handled = true; } |
Noch besser könnte die Positiv-Abfrage sein, denn Dich interessieren doch nur Ziffern, Komma und Punkt:
C#-Quelltext
1: 2:
| if ( ! (e.KeyChar == '.' || e.KeyChar == ',' || Char.IsDigit(e.KeyChar)) ) e.Handled = true; |
Gruß Jürgen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!