Autor Beitrag
Izze
Hält's aus hier
Beiträge: 12

Vista

BeitragVerfasst: So 08.02.09 09:45 
Ich habe Textboxen erstellt in denen nur Zahlen vorkommen dürfen.

Mit z. B.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
        private void textBoxFett100_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Nur Komma, Zahlen und die Backslashtaste zulassen
            if (",1234567890\b".IndexOf(e.KeyChar.ToString()) < 0)
            {
                e.Handled = true;
            }            
        }

verhindere ich die Nutzung aller Tasten ausser Zahlen, Komma und Backslash.

Hier

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
        private void buttonBerechnen100G_Click(object sender, EventArgs e)
        {
            //Textboxen 100 auslesen und bei leerem Feld Zahl 0 einsetzen (int=Ganzzahl, double=Kommazahl)
            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);

            //Punkte berechnen, Ergebnis ausgeben und auf 2 Stellen hinter dem Komma begrenzen (es wird gerundet)
            //Formel für Points = "Fett*0,11 + kcal*0,0165"
            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.

_________________
Best,
Izze
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: So 08.02.09 12:34 
Hallo,

Du kannst es aufgeben, alle solche Eingaben zu verhindern. Unter In einer TextBox nur bestimmte Zeichen/Eingaben zulassen gibt es eine Reihe von Argumenten auch zu Ctrl+V.

Die einzige sinnvolle Änderung wäre etwas wie dieses:
ausblenden C#-Quelltext
1:
2:
3:
int a = 0;     //  Vorgabewert gleich festlegen
if ( ! String.IsNullOrEmpty(textBoxKcal100.Text))
  int.TryParse(textBoxKcal100.Text, out a);

TryParse fängt auch alle falschen Inhalte ab - egal wie sie in die TextBox gelangt sind.

Gruß Jürgen
Izze Threadstarter
Hält's aus hier
Beiträge: 12

Vista

BeitragVerfasst: So 08.02.09 14:03 
user profile iconJüTho hat folgendes geschrieben Zum zitierten Posting springen:
Die einzige sinnvolle Änderung wäre etwas wie dieses:
ausblenden C#-Quelltext
1:
2:
3:
int a = 0;     //  Vorgabewert gleich festlegen
if ( ! String.IsNullOrEmpty(textBoxKcal100.Text))
  int.TryParse(textBoxKcal100.Text, out a);

TryParse fängt auch alle falschen Inhalte ab - egal wie sie in die TextBox gelangt sind.


Jop, das hat völlig gereicht.
Besten Dank!

_________________
Best,
Izze