Announcement

Collapse
No announcement yet.

Rechner in Klasse Rechnet nicht :(

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Rechner in Klasse Rechnet nicht :(

    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)
            {
    
            }
    
    
            
       }
    }

  • #2
    Hallo,

    nicht auf Button Klicks etc.
    sind die Ereignishandler zugewiesen? Im Code ist davon nichts zu sehen.

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Danke erstmal für deine schnelle Antwort.

      Was genau sind Ereignishandler und wie weise ich die zu ?

      Comment


      • #4
        Ereignishandler sind diejenigen Methoden die ein Ereignis verarbeiten.

        Im einfachsten Fall generiert der Designer den Handler und "verknüpft" ihn mit dem Ereignis wenn auf ein Steuerelement (auch eine Form ist ein Steuerelement) im Designer ein Doppelklick getätigt wird. Es entstehen dann Methoden wie zB
        [highlight=c#]
        private void button1_Click(object sender, EventArgs e)
        {
        }
        [/highlight]

        In dem von dir geposteten Code sind die Ereignishandler zwar definiert aber (vermutlich) nicht zugewiesen.

        Um diese zuzuweisen öffne dein UserControl in der Designansicht und gehe alle Steuerelemente durch die ein Ereignis aufweisen sollen. D.h. zB alle Buttons, weil diese auf Klick reagieren sollen, TextBoxen auf TextChanged oder was du eben hast.

        Wenn ein Steuerelement ausgewählt ist - zB ein button1 - dann öffne das DropDown-Feld entsprechen angehängter Abbildung und wähle aus der Liste den entsprechenden Ereignishändler. Für button1 wäre dies zB button1_Click.
        Wiederhole diese Schritte für alle Steuerelemente.

        mfG Gü

        PS: Machen wir Party?
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          Vielen dank für die klasse beschreibung. Das war die Lösung. Vielen vielen dank.

          Comment

          Working...
          X