Entwickler-Ecke

WinForms - Abfrage Zahl oder Text [Anfänger braucht Hilfe]


Atticus - Di 27.03.12 11:08
Titel: Abfrage Zahl oder Text [Anfänger braucht Hilfe]
Hallo Leute,

haben an der FH mit C# begonnen, allerdings wird einem nicht die Sprache nach und nach vermittelt sondern man soll es anhand von Übungen selbst erlernen. Das fällt mir etwas schwer.
Ich habe nun eine einfache (für mich derzeit unlösbare) Aufgabe.
Ich habe eine Form gebaut: http://s14.directupload.net/file/d/2842/fgrlcjlu_png.htm
Nun soll folgendes möglich sein:
-wird eine Zahl eingegeben und Berechne gedrückt, so soll im Ausgabefeld das doppelte der Zahl erscheinen. Bei einem Text soll dieser gespiegelt wiedergegeben werden. Das soll mal für den Anfang reichen.

Hier der Code und ich kann mir schon vorstellen, dass ihr die Hände über dem Kopf zusammenschlagt. Es ist teils durch probieren, Google-Suche und in Arbeit mit meinem Banknachbarn entstanden.
Ich weiß auch nicht genau wie ich die if-Abfrage stellen muss, oder ob das überhaupt der beste Weg ist. Habe mitbekommen, dass einige es mit try & catch versuchen, aber damit kenne ich mich nicht aus.

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:
namespace Aufgabe_1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string eingabe = textBox1.Text;
            if(eingabe = ) //Überprüfung ob der Wert von textBox1 eine Zahl ist, im else Fall(string) wird dieser gespiegelt.
            {
                textBox2.Text = Convert.ToString(Convert.ToInt32(textBox1.Text) + Convert.ToInt32(textBox1.Text)); //Wert in Box2=Box1*2
            }
            else
            {
                textBox2.Text = textBox1.Text.Reverse<>; //Mit der Anweisung .Reverse wir der eingegebene String gespiegelt und erscheint im Ausgabefeld
            }
        }
    }
}


Moderiert von user profile iconTh69: C#-Tags hinzugefügt


Ralf Jansen - Di 27.03.12 11:20

Stichwort wäre Int32.TryParse [http://msdn.microsoft.com/de-de/library/f02979c7.aspx]. Damit kannst du testen ob der String in einen Int32 konvertierbar ist und erhältst auch den entsprechenden Wert als Int32 (wenn möglich).


Atticus - Di 27.03.12 11:34

Meinst du damit, dass ich das in die if-Abfrage einbauen soll oder wie? Kann dir leider nicht ganz folgen.


Ralf Jansen - Di 27.03.12 11:40

Sie dir die verlinkte Hilfe an insbesondere das Codebeispiel(die TryToParse Methode). Entspricht ziemlich genau deiner Problemstellung.


Th69 - Di 27.03.12 12:31

Hallo Atticus :welcome:

lernst du denn anhand eine Buches? Empfehlen kann ich das OpenBook Visual C# 2010 [http://openbook.galileocomputing.de/visual_csharp_2010/] bzw. dessen Vorgänger Visual C# 2008 [http://openbook.galileocomputing.de/visual_csharp/] (hier wird noch WinForms benutzt, im 2010er Buch nur WPF).


Atticus - Di 03.04.12 09:30

@Ralf: Hatte nicht gesehen, dass es ein Link war. Habs mir mal durchgelesen und muss leider sagen, dass ich nicht wirklich damit klarkomme. Nach meinem Verständnis wird die eigegebene Zahl in "Ganzzahl" (kan nicht wirklich was damit anfangen) umgewandelt.
Ich will jedoch prüfen, ob es sich um eine Zahl oder einen Buchstaben handelt.
Komme immer noch nicht weiter.

@Th69: Schön wärs. Wir bekommen keinerlei Hilfestellung. Habe mal in das openbook von Galileo und in guidetocsharp.de nachgesehen, aber das sind ja quasi komplette Bücher und nicht speziell auf mein Problem zugeschnitten. Wenn ich mich da einarbeite komme ich dem Stoff auf keinen Fall hinterher.


Ralf Jansen - Di 03.04.12 09:52

Zitat:
Nach meinem Verständnis wird die eigegebene Zahl in "Ganzzahl" (kan nicht wirklich was damit anfangen) umgewandelt. Ich will jedoch prüfen, ob es sich um eine Zahl oder einen Buchstaben handelt.


Als Ergebnis von TryParse erhältst du nicht nur den umgewandelten Wert sondern auch ob das funktioniert hat oder nicht. Darauf mußt du nur prüfen. Genau das macht das Codebeispiel in der Hilfe.