WerderJung hat folgendes geschrieben : |
hallo thomas! |
So bitte nicht.
Ich merke schon, du stammst aus Österreich, und da dreht man sich um. In Deutschland außerhalb Bayerns kommt zuerst der Vorname; also entweder wie in Foren üblich als "Jürgen" oder notfalls als "Herr Thomas".
WerderJung hat folgendes geschrieben : |
also ich habs jetzt die Zahl1 in int abgespeichert, ich hab das wahrlich viel zu kompliziert denke es folgend nicht funktionieren kann... sprich ich hab bei private void button1_Click
C#-Quelltext 1: 2:
| textBox1.Text += 1.ToString(); zahl1 = textbox1.Text |
nunja jetzt speichert es halt nach jeden buttonklick die Zahl ab sprich ich klick auf 384 und es speichert 384 ab, da ich das zahl1 = textbox1.Text bei jedem Zahlenbutton drinnen habe |
Das halte ich für weniger gut. Du musst die Zahl doch erst am Schluss separat verwenden; also wozu bei jedem Zahlen-Click? Außerdem kann das nicht funktionieren, wenn Zahl1 ein int ist:
C#-Quelltext
Da muss doch konvertiert werden! Und das muss wirklich nicht ständig wiederholt werden.
WerderJung hat folgendes geschrieben : |
--> wo speichert es zahl 2 hin ^^ |
Naja, nach "int secondNumber", aber erst am Schluss, wenn das Gleichheitszeichen gedrückt wird.
WerderJung hat folgendes geschrieben : |
also hab ich mir überlegt es in eine if else reinzugeben ... |
Naja, das geht schon, wird aber unterm Strich komplizierter.
WerderJung hat folgendes geschrieben : |
Es funktioniert auch aber eben nur mit plus. |
Benutze denselben EventHandler für Plus/Minus/Mal/Durch. Das geht wie folgt:
1. Doppelclick auf Plus.
2. plusbtn_Click umbenennen in calculators_Click.
3. allgemeinen Inhalt reinschreiben (ähnlich wie in meinem vorigen Code)
4. in die Designer-Ansicht wechseln
5. den Minus-Button auswählen
6. nach Eigenschaften, dann nach Ereignisse gehen (Button mit dem Blitz)
7. unter "Click" die ComboBox öffnen und
8. calculators_Click auswählen
Dann gehört calculators_Click zu beiden Buttons.
Das gleiche Verfahren ist auch meine Empfehlung für Numbers_Click.
Es muss nicht auf diese Weise gemacht werden! Das ist nur mein Vorschlag zur Vereinheitlichung, weil für 10 Ziffern das gleiche Verfahren gilt und für vier Rechenoperationen (oder später noch mehr) ebenso. So eine Vereinheitlichung ist immer besser.
WerderJung hat folgendes geschrieben : |
So jetzt zum =.. |
Tut mir leid, was du bisher vorhast, verstehe ich nicht so ganz. Du musst zuerst beide Werte in Zahlen verwandeln: Bei calculators_Click nach zahl1 (aber nicht einfach per String, sondern per int.Parse), bei Gleich-Click nach zahl2.
Abhängig vom vorher registrierten (!) Rechenzeichen - deshalb meine Variable calculator - wird dann gerechnet:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| private int calculate() { int result = 0; switch(calculator) { case '+': result = zahl1 + zahl2; break; case '-': result = zahl1 - zahl2; break; case '*': result = zahl1 * zahl2; break; case '/': result = zahl2 == 0 ? 0 : zahl1 / zahl2; break; } return result; } |
WerderJung hat folgendes geschrieben : |
Nun das weitere Problem ist ich hab da eben beim = button nur das plus also was mach ich bei minus? sprich wenn er den button plus geklickt hat dann plus rechnen wenn minus dann minus.. aber "wie lese ich es aus" was man angeklickt hat? |
Das hatte ich doch alles schon geschrieben in Calculators_Click().
WerderJung hat folgendes geschrieben : |
warum funktioniert leicht Convert nicht.. also bei mir hat es zwar funktioniert aber ich halte mich natürlich an dich und versuche es mit TryParse (was ist da der Unterschied)? |
Das war ein Missverständnis. Convert.ToInt32 und int.Parse machen im Wesentlichen das Gleiche und funktionieren gleich. Die Methoden der Convert-Klasse passen aber in vielen Fällen nicht; deshalb versuche ich sie zu vermeiden, und das ist auch meine Standardempfehlung. (Wenn die InputBox von Hand gefüllt werden dürfte mit einem solch schwachsinnigen Inhalt wie "ab23,4c", dann dürfte nur TryParse benutzt werden. Hinweise dazu stehen wie immer in
SDK-Doku/MSDN/Hilfe.)
Gruß Jürgen