Hier mal der Komplette Code (musste gekürzt werden). Es kommen keinerlei fehlermeldungen, dennoch reagiert mein Taschenrechner nicht auf Button Klicks etc. Ursprünglich stammt der rechner aus einer Form, diesen wollte ich nur in eine Klasse Packen. Hoffe ihr könnt mir helfen. Danke im Voraus.
Code:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace Test_Nr1 { public partial class KlasseKalkulationen : UserControl { private bool kommabenutzt = false; private double memory = 0; private double result = 0; private bool operationstarted = false; private double tempresult = 0; private char tempoperator = ' '; public KlasseKalkulationen() { InitializeComponent(); tbxEingabe.Focus(); } private void benutzeZeichen(char key) { if (operationstarted) { double singlevalue = 0; Double.TryParse(tbxEingabe.Text, out singlevalue); tempresult = singlevalue; tbxEingabe.Text = "0,"; kommabenutzt = false; operationstarted = false; } if (key != '+' && key != '-' && key != '/' && key != '*' && key != '\b' && key != '\r' && key != ',' && key != 'c' && key != 'd' && key != 'p' && key != 'w') { if (tbxEingabe.Text == "0," && kommabenutzt == false) tbxEingabe.Text = ""; if (kommabenutzt == false) { tbxEingabe.Text = tbxEingabe.Text.Replace(",", ""); tbxEingabe.AppendText(key.ToString() + ","); } else tbxEingabe.AppendText(key.ToString()); } else if (key == ',') { kommabenutzt = true; } else if (key == '\b') { if (tbxEingabe.Text[tbxEingabe.Text.Length - 1] == ',' && kommabenutzt == true) kommabenutzt = false; else { if (tbxEingabe.Text.Length == 2) { tbxEingabe.Text = "0,"; } else { if (tbxEingabe.Text.Length > 2 && tbxEingabe.Text[tbxEingabe.Text.Length - 1] == ',') { tbxEingabe.Text = tbxEingabe.Text.Remove(tbxEingabe.Text.Length - 2) + ","; } else { tbxEingabe.Text = tbxEingabe.Text.Remove(tbxEingabe.Text.Length - 1); } } } } else if (key == '-') { if (tbxEingabe.Text[0] == '-') { string temp = tbxEingabe.Text.Substring(1); tbxEingabe.Text = temp; } else tbxEingabe.Text = "-" + tbxEingabe.Text; } } private void ShowResult() { if (result.ToString().Contains(",")) { tbxEingabe.Text = result.ToString(); kommabenutzt = true; } else { tbxEingabe.Text = result.ToString() + ","; kommabenutzt = false; } } private void benutzeOperator(char operate) { operationstarted = true; tempoperator = operate; } private void Calculate(double valueOne, double valueTwo) { switch (tempoperator) { case '+': result = valueOne + valueTwo; break; case '-': result = valueOne - valueTwo; break; case '/': result = valueOne / valueTwo; break; case '*': result = valueOne * valueTwo; break; } } private void tbxEingabe_KeyPress(object sender, KeyPressEventArgs e) { if ("1234567890\b,+-/*\r".IndexOf(e.KeyChar.ToString()) < 0) { e.Handled = true; } else { if (e.KeyChar == '*' || e.KeyChar == '+' || e.KeyChar == '/' || e.KeyChar == '-') benutzeOperator(e.KeyChar); else { benutzeZeichen(e.KeyChar); } e.Handled = true; } } private void btnRuecktaste_Click(object sender, EventArgs e) { benutzeZeichen('\b'); } private void btnClearEnv_Click(object sender, EventArgs e) { memory = 0; tbxEingabe.Text = "0,"; } (rausgekürzt 1/2/3/4...) private void btnClear_Click(object sender, EventArgs e) { tbxEingabe.Text = "0,"; } private void btnMemoryClear_Click(object sender, EventArgs e) { memory = 0; tbxMemoryStatus.Text = ""; } private void btnMemoryRead_Click(object sender, EventArgs e) { tbxEingabe.Text = memory.ToString(); if (!tbxEingabe.Text.Contains(",")) tbxEingabe.Text += ","; } private void btnMemorySave_Click(object sender, EventArgs e) { if (tbxEingabe.Text != "0,") { memory = Convert.ToDouble(tbxEingabe.Text); tbxMemoryStatus.Text = "M"; } } private void btnMemoryAdd_Click(object sender, EventArgs e) { if (tbxEingabe.Text != "0,") { double temp = Convert.ToDouble(tbxEingabe.Text); memory += temp; tbxMemoryStatus.Text = "M"; } } private void btnZero_Click(object sender, EventArgs e) { benutzeZeichen('0'); } private void btnSwitch_Click(object sender, EventArgs e) { benutzeZeichen('-'); } private void btnComma_Click(object sender, EventArgs e) { benutzeZeichen(','); } private void btnRoot_Click(object sender, EventArgs e) { Double.TryParse(tbxEingabe.Text, out result); result = Math.Sqrt(result); ShowResult(); } private void btnReciprocalValue_Click(object sender, EventArgs e) { Double.TryParse(tbxEingabe.Text, out result); result = 1 / result; ShowResult(); } private void btnAdd_Click(object sender, EventArgs e) { benutzeOperator('+'); } private void btnSubtract_Click(object sender, EventArgs e) { benutzeOperator('-'); } private void btnMultiplicate_Click(object sender, EventArgs e) { benutzeOperator('*'); } private void btnDivide_Click(object sender, EventArgs e) { benutzeOperator('/'); } private void btnPercent_Click(object sender, EventArgs e) { double temp = 0; Double.TryParse(tbxEingabe.Text, out temp); result = (tempresult / 100 * temp); ShowResult(); } private void btnResult_Click(object sender, EventArgs e) { double singlevalue = 0; Double.TryParse(tbxEingabe.Text, out singlevalue); Calculate(tempresult, singlevalue); tempresult = singlevalue; ShowResult(); } private void KlasseKalkulation_Load(object sender, EventArgs e) { tbxEingabe.Focus(); } private void tbxEingabe_TextChanged(object sender, EventArgs e) { } private void KlasseKalkulationen_Load(object sender, EventArgs e) { } } }
Comment