Zum Inhalt springen

Textboxenausgabe kompliziert in C#


Empfohlene Beiträge

Geschrieben

allo,

warum ist es so kompliziert Textboxeingaben zu berechnen?

Also mal angenommen ich habe 2 Textboxen (Textbox1 & Textbox2). Dort gebe ich jeweils eine 5 ein und möchte diese Eingabe dann berechnet haben und in einem Lable ausgegeben bekommen.

Ich komme von VB.Net und dort war es ganz einfach so:

Label1.Text = Textbox1.Text + Textbox2.Text
Warum muss man das bei C# so kompliziert machen mit "int.parse"??
Label1.Text = (int.Parse(Textbox1.Text) + (int.Parse(Textbox2.Text) * (decimal.Parse(Textbox3.Text)))).ToString();

Und was ist wenn im String Zahlen bzw. Buchstaben vorhanden sind?? So stürzt es dann ab...

Geschrieben

Warum es in VB so einfach ist? Weil VB untypisierten Schwachfug erlaubt. Das was du also als angenehm in VB empfindest ist eine der großen Problem von VB.

C# ist eine streng typisierte Sprache. Um herauszufinden, ob die Umwandlung in ein Integer möglich ist gibt es die TryParse Funktion.

Geschrieben
Und was ist wenn im String Zahlen bzw. Buchstaben vorhanden sind?? So stürzt es dann ab...

Abstürzen sollte dein Programm ja schonmal garnicht xD

Der User bekommt einfach ne Meldung was er Falsch gemacht hat, hab dir mal nen Beispielcode gemacht:

            int a = 0, b = 0;

            int.TryParse(tbxZahl1.Text, out a);

            int.TryParse(tbxZahl2.Text, out ;

            if (a != 0 && b != 0)

                tbxErg.Text = (a + .ToString();

            else

                MessageBox.Show("Bitte überprüfen sie ihre Eingabe (Nur Zahlen erlaubt)");[/code]

So bekommt der User wenigstens mitgeteilt, dass er etwas falsch gemacht hat =D.

Wenn da natürlich 0 steht bekommt er trotzdem eine Fehlermeldung, ist also nicht ganz wasserdicht mein Beispiel, sonst muss man halt die Textboxen noch prüfen ob irgendwo 0 steht, ich kenne aber Niemanden der irgendwas mit 0 addieren will xD.

Geschrieben
Naja, die XXX.TryParse Methoden haben auch einen Rückgabewert...

******e xD ich benutze die so selten, natürlich lol, dann müsste der Code so aussehen:

            int a = 0, b = 0;

            if (int.TryParse(tbxZahl1.Text, out a) && int.TryParse(tbxZahl2.Text, out )

                tbxErg.Text = (a + .ToString();

            else

                MessageBox.Show("Bitte überprüfen sie ihre Eingabe (Nur Zahlen erlaubt)");[/code]

Sorry für den Fehler xD

Geschrieben

Ich hoffe bei deiner Berichtsheftsoftware wird besser validiert Oo

Hier mal ein Snippet mit Validierung:


private void button1_Click(object sender, EventArgs e)

        {

            int box1;

            int box2;

            //Regex -> nur Zahlen gültig

            var myRegex = new Regex("^[0-9]*$");


            //Textbox 1 auswerten

            if(textBox1.Text.Equals(String.Empty) || !myRegex.IsMatch(textBox1.Text))

            {

                MessageBox.Show(@"Textbox1 ist leer oder ungültig gefüllt.");

                return;

            }

            else

            {

                box1 = int.Parse(textBox1.Text);

            }

            //Textbox 2 auswerten

            if (textBox2.Text.Equals(String.Empty) || !myRegex.IsMatch(textBox2.Text))

            {

                MessageBox.Show(@"Textbox2 ist leer oder ungültig gefüllt.");

                return;

            }

            else

            {

                box2 = int.Parse(textBox2.Text);

            }

            //Berechnung

            label1.Text = (box1 + box2).ToString();

        }

Geschrieben
Ich hoffe bei deiner Berichtsheftsoftware wird besser validiert Oo

Genau sowas überprüfe ich abschließend nochmal im Review, wobei ich meist drauf achte das der User ohnehin nur Strings eingeben kann, da muss ich nichts validieren, beispielsweise die Arbeitszeit ist gleich in nem NumericUpDown, da kann der User sich die Finger wundtippen beim Versuch nen String da reinzuschreiben, sowas spart Fehlerquellen.

Daher kommt es auch, dass ich tryparse nicht benutze, ich packe das Übel an der Wurzel =D.

RegEx benutze ich nur an einer Stelle, und zwar da, wo der User eine URL eingeben kann =).

Geschrieben

Prinzipiell könnte man die Validierung auch nochmal in eine Methode packen. Aber ich denke, das Prinzip ist klar :-)

@Sky warum solltest du strings nicht validieren müssen? oO Und Arbeitszeit wird dann ein sehr großes Drop Down ;-)

Geschrieben

Arbeitszeit ist kein DropDown, es ist ein NumericUpDown, du hast 2 Pfeiltasten nach oben und unten, den in/dekrement-wert pro klick kann man selbst festlegen, ausserdem kann man die Zahl manuell eintippen, aber eben keine Buchstaben.

Ich hab heut morgen noch geschlafen glaub ich...

Strings muss man (meist) auch validieren, sicher, beispielsweise muss ich das tun weil ich da keine SQL-Befehle unescaped drin haben darf.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...