Taschenrechnerprogramm Visualisierung
-
Die jeweiligen Berechnungen sind das kleinere Problem.
Mehr interessiert mich, wie ich eine Eingabe einlesen kann?
Ich kenne nur die ReadLine Methode, aber hier habe ich ja die using Klausel Console nicht.Ich müsste wissen wie ich im ersten text feld etwas einlese, wie ich die zweite zahl nach dem klicken der rechenoperation einlese und wie ich das ergebnis im zweiten text feld ausgebe.
Danke für die Hilfe
-
Das hat "Rhombi..." dir doch schon geschrieben, mittels Zugriff auf die Eigenschaft 'Text' der entsprechenden TextBox.
In GUI-Anwendungen wird ereignisorientiert programmiert (intern werden Window Messages gesendet), d.h. du brauchst nicht mehr eine ReadLine()-Methode aufrufen, sondern in den entsprechenden Ereignissen (z.B. Click, TextChanged etc.) greift man dann auf die Eigenschaften (Properties) der Controls zu.
-
Jetzt bekomme ich nur Probleme mit der Konvertierung.
Wenn ich über TextBox1.Text den Wert in eine Variable einlese kann dies nur eine String variable sein.
mit dieser String variable kann ich aber die rechenoperation nicht durchführen.Int oder Double Variablen kann ich dann auch wieder nicht mit TextBox.Text ausgeben.
Wie wird dies gemacht?
-
Dazu gibt es die Methoden 'Parse' bzw. 'TryParse' für den jeweiligen Datentyp, z.B. Int32 oder Double.
string text = "42"; int x1 = Int32.Parse(text); // liefert aber eine Exception bei fehlerhafter Umwandlung (falls keine Zahl vorhanden) //bzw. int x2; if(Int32.TryParse(text, out x2)) { // Wert steht in x2 } else { // Fehler bei Umwandlung }
Und bzgl. Exceptions schau dir mal die Schlüsselwörzter 'try' und 'catch' in der Hilfe an.
Und die umgekehrte Umwandlung (Zahl -> String) ist auch ganz einfach:
int zahl = 42; string text = zahl.ToString();
(das sollte aber in jedem Buch stehen -)
P.S: Sehe gerade, daß du ja auch im Konsolenprogramm schon "Convert.ToInt32" benutzt hast (aber anscheinend nicht verstanden). Diese Methode sollte jedoch nicht benutzt werden, sondern statt dessen eben "Parse" bzw. noch besser "TryParse".
-
eben das im konsolenprogramm benutzte convert.toint funktionierte in der applikation nicht.
ich werde deine variante sofort probieren
ein wenig später:
und es funktioniert. danke für die hilfe.kann mir jetzt noch jemand sagen, wie ich ein textfeld einer textbox wieder loeschen kann?
ich versuchte es mit textBox1.clear(); jedoch brachte das nicht den erwuenschten effekt.
-
Textbox.Text = "";
:p
-
Das hatte ich probiert.
da ich den eingelesenen wert ja in einen double umgewandelt habe, bringt er mir bei dem versuch den Text auf "" zu setzen einen laufzeitfehler mit der nachricht "Die Eingabezeichenfolge hat das falsche Format."
Überschrift ist "Format Exception wurde nicht behandelt"was kann man dagegen tun?
-
Nein beim setzen des TExtbox Textes sollte da eigentlich kein Laufzeitfehler kommen NUR beim wieder auslesen in einen double oder so.Zeig doch mal den Codeausschnitt bitte her.
-
Das ist das Einlesen der Eingabe:
private void textBox1_TextChanged(object sender, EventArgs e) { stra = textBox1.Text; a = Double.Parse(stra); }
löschen der textbox sollte sein:
private void clear_Click(object sender, EventArgs e) { textBox1.Text = ""; }
doch da bekomme ich den oben genannten fehler und das programm hängt sich auf.
-
Dann lies dir noch mal meinen Beitrag "genau" durch!
Und TextChanged ist ein ungünstiges Ereignis, um die Konvertierung (String->Zahl) durchzuführen, da dieses bei jeder Änderung aufgerufen wird.
Mach dies erst beim Button-Click...
P.S. "das programm hängt sich auf. " -> nein, sondern es zeigt eine "Exception" (Stichwort!) an!
-
Okay danke für die Hilfe.
Wenn ich die Umwandlung erst beim Button Click auf die jeweilige rechenoperation mache klappt das
danke.
-
zudem sei auf dem TryParse aufmerksam gemacht (wie es hier schon wurde)
private void Calc() { double number = 0; if (double.TryParse(textBox1.Text, out number)) Calc(number); else { MessageBox.Show("Bitte nur zahlen eingeben"); textBox1.Text = ""; } }
// tags vergessen
-
Ich versuche gerade dem Taschenrechnerprogramm noch einen kleinen Währungsrechner hinzuzufügen.
da arbeite ich mit comboboxen.
durch if/else wollte ich abfragen, welcher Index in der ComboBox gewählt wurde.wie wird der index vergeben?
ich habe drei zeilen in die auflistung gebracht.
welchen index haben die jeweiligen zeilen?danke im voraus
mfg simon
-
von 0 aufseigend - wie bei einem normalen array
steht aber auch in der msdn {o;
-
Oder einfach mal selber ausprobieren und den aktuell ausgewählten index ausgeben.