Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Textboxenausgabe kompliziert in C#

Empfohlene Antworten

Veröffentlicht

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...

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.

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.

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

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();

        }

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 =).

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.