Ich habe Textboxen erstellt in denen nur Zahlen vorkommen dürfen.
Mit z. B.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| private void textBoxFett100_KeyPress(object sender, KeyPressEventArgs e) { if (",1234567890\b".IndexOf(e.KeyChar.ToString()) < 0) { e.Handled = true; } } |
verhindere ich die Nutzung aller Tasten ausser Zahlen, Komma und Backslash.
Hier
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| private void buttonBerechnen100G_Click(object sender, EventArgs e) { int a = String.IsNullOrEmpty(textBoxKcal100.Text) ? 0 : int.Parse(textBoxKcal100.Text); double b = String.IsNullOrEmpty(textBoxFett100.Text) ? 0 : double.Parse(textBoxFett100.Text); int c = String.IsNullOrEmpty(textBoxPortionsgroesse100.Text) ? 0 : int.Parse(textBoxPortionsgroesse100.Text);
textBoxPunkte100.Text = ((((b * 0.11) + (a * 0.0165)) * c) / 100).ToString("0.##"); } |
wird geprüft ob überhaupt etwas in der Textbox steht und wenn nicht wird automatisch eine 0 gesetzt.
a und c müssen Ganzzahlen sein, b darf eine Kommazahl sein!
Bei der Zulassung der Tasten in der Textbox a und c wurde Komma verboten.
Soweit so gut, allerdings habe ich immer noch das Problem, dass man mittels der rechten Mausttaste wirres Zeug einfügen kann.
Und selbst wenn es nur Zahlen sind, a und c dürfen kein Komma enthalten!
Sowohl als auch, es kommt eine Fehlermeldung.
Ich möchte nun entweder das Benutzen der rechten Maustaste verhindern, was evtl. das einfachste wäre (wenn ich auch nicht weiss wie), oder aber den falschen Inhalt abfangen und Meldung ausgeben, was vermtl. die schönere Variante ist.
Eine direkte Autokorrektur auf meinetwegen 0 ist auch OK.