Hay an alle Programmierer da draußen,
ich habe mich die letzten zwei Tage mit C# auseinander gesetzt und einen Taschenrechner programmiert. Er funktioniert auch schon, nur möchte ich noch einen kleinen “Extra” einbauen.
Ich habe mir als Vorlage, den Taschenrechner von Windows genommen. Und nun möchte ich noch einbauen, das man in der Textbox auch rechnen kann. Sprich man gibt eine Zahl ein dann die + - * oder / Taste und dann nochmal eine Zahl und bei Enter sollte man dann die Lösung sehen. (Das alles geschieht in 1! Textbox)
Das mit der Entertaste hab ich hinbekommen, war nicht als zu schwer, da ich einfach den Code vom = Button kopiert habe.
Hier mal mein Code:
[ICH => Anfänger]
[CSharp]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Taschenrechner
{
public partial class Form1 : Forma
{
//Opperationen festlegen
public enum Opperation
{
Addieren, Subtrachieren, Multiplizerien, Dividieren, Keine
}
//Zahlen,etc festlegen
double? zahl1 = null, zahl2 = null;
bool neueZahl = false;
Opperation op = Opperation.Keine;
public Form1()
{
InitializeComponent();
}
//Alle Zahlen Button
private void btZahl_Click(object sender, EventArgs e)
{
if (neueZahl)
{
this.txtErgebnis.Text = ((Button)sender).Text;
neueZahl = false;
}
else
this.txtErgebnis.Text += ((Button)sender).Text;
}
//Multiplizieren Button
private void btMultiplizieren_Click(object sender, EventArgs e)
{
if (zahl1 == null)
{
if (this.txtErgebnis.Text != "")
zahl1 = double.Parse(this.txtErgebnis.Text);
else
zahl1 = 0;
}
neueZahl = true;
op = Opperation.Multiplizerien;
}
//Dividieren Button
private void btDividieren_Click(object sender, EventArgs e)
{
if (zahl1 == null)
{
if (this.txtErgebnis.Text != "")
zahl1 = double.Parse(this.txtErgebnis.Text);
else
zahl1 = 0;
}
neueZahl = true;
op = Opperation.Dividieren;
}
//Subtrachiren Button
private void btSubtrachiren_Click(object sender, EventArgs e)
{
if (zahl1 == null)
if (this.txtErgebnis.Text != "")
zahl1 = double.Parse(this.txtErgebnis.Text);
else
zahl1 = 0;
neueZahl = true;
op = Opperation.Subtrachieren;
}
//Addieren Button
private void btAddieren_Click(object sender, EventArgs e)
{
if (zahl1 == null)
if (this.txtErgebnis.Text != "")
zahl1 = double.Parse(this.txtErgebnis.Text);
else
zahl1 = 0;
neueZahl = true;
op = Opperation.Addieren;
}
//Ausrechnung Button
private void btIstGleich_Click(object sender, EventArgs e)
{
if (zahl1 != null && op != Opperation.Keine)
zahl2 = double.Parse(this.txtErgebnis.Text);
switch (op)
{
case Opperation.Addieren:
this.txtErgebnis.Text = (zahl1 + zahl2).ToString();
break;
case Opperation.Subtrachieren:
this.txtErgebnis.Text = (zahl1 - zahl2).ToString();
break;
case Opperation.Dividieren:
try
{
this.txtErgebnis.Text = (zahl1 / zahl2).ToString();
}
catch (DivideByZeroException)
{
MessageBox.Show("Division durch 0 nicht möglich");
}
break;
case Opperation.Multiplizerien:
this.txtErgebnis.Text = (zahl1 * zahl2).ToString();
break;
case Opperation.Keine:
break;
}
zahl1 = zahl2 = null;
neueZahl = true;
}
//Textbox
private void txtErgebnis_KeyUp(object sender, KeyEventArgs e)
{
String aa = txtErgebnis.Text;
String bb = "";
bool marker = false;
foreach (char c in aa)
{
if (c == '.' && !marker)
{
marker = true;
}
if (c == ',' && !marker)
{
marker = true;
bb += c;
}
if (c == '-' && !marker)
{
marker = true;
bb += c;
}
if (c == '+' && !marker)
{
marker = true;
bb += c;
}
if (char.IsDigit(c))
{
bb += c;
}
}
txtErgebnis.Text = bb;
if (e.KeyCode == Keys.Enter)
{
{
if (zahl1 != null && op != Opperation.Keine)
zahl2 = double.Parse(this.txtErgebnis.Text);
switch (op)
{
case Opperation.Addieren:
this.txtErgebnis.Text = (zahl1 + zahl2).ToString();
break;
case Opperation.Subtrachieren:
this.txtErgebnis.Text = (zahl1 - zahl2).ToString();
break;
case Opperation.Dividieren:
try
{
this.txtErgebnis.Text = (zahl1 / zahl2).ToString();
}
catch (DivideByZeroException)
{
MessageBox.Show("Division durch 0 nicht möglich");
}
break;
case Opperation.Multiplizerien:
this.txtErgebnis.Text = (zahl1 * zahl2).ToString();
break;
case Opperation.Keine:
break;
}
zahl1 = zahl2 = null;
neueZahl = true;
}
{
//Rechnen über Textbox (zum Test Taste Up genommen)
if (e.KeyCode == Keys.Up)
{
/* Wenn Zahl eingeben in Textbox -> neue Zahl = false?
Wenn + - * / Taste gedrückt -> neue Zahl = true? */
}
}
}
}
//Rücktaste Button
private void btRücktaste_Click(object sender, EventArgs e)
{
if (this.txtErgebnis.Text.Length > 0)
this.txtErgebnis.Text = this.txtErgebnis.Text.Substring(0, this.txtErgebnis.Text.Length - 1);
}
//Neu Button
private void btNeu_Click(object sender, EventArgs e)
{
if (txtErgebnis.GetType() == typeof(TextBox))
{
((TextBox)txtErgebnis).Clear();
}
}
//Vorzeichen Button
private void btVorzeichen_Click(object sender, EventArgs e)
{
if (this.txtErgebnis.Text != "")
txtErgebnis.Text = Convert.ToString(double.Parse(this.txtErgebnis.Text) * -1);
}
//Komma Button
private void btKomma_Click(object sender, EventArgs e)
{
if (this.txtErgebnis.Text != txtErgebnis + ",")
{
txtErgebnis.AppendText(",");
}
}
}
}
[/CSharp]
Weiß vielleicht einer wie ich das hinbekommen, dass wenn man Zahlen eingibt das die Zahl dann, wie bei durch drücken der Button’s die erste Zahl weg geht und man eine neue eingeben kann? Und logischerweiße das man die Rechenart(+ - * /) vorher eingibt.