Taschenrechner in Windows Forms (C#): Wie kann ich das Komma gescheit einbauen?

3 Antworten

Sorry aber das ist wirklich ein schrecklicher Code...

Nachdem ich überhaupt nicht verstehe was du in deinem Code probierst versuche ich es einfach mal so: Wo ist das Problem, das man einfach mithilfe des ","-Buttons einen Punkt in den Zahlenwert einfügt und diesen der Funktion als float oder double übergibt?

Liebe Grüße, JutenMorgen!

Wenn der Nutzer Werte eingibt, dann sind diese doch noch im String-Format. Diesen String kannst du bearbeiten, z.B. neue Zahlen anhängen.

private TextBox Display;

public void AddComma(object sender, EventArgs e) 
{
  if (display.Text.IndexOf(".", StringComparison.CurrentCultureIgnoreCase)
        == -1)
  {
    Display.Text += ".";
  }
}
                
public void NumberClicked(object sender, EventArgs e) 
{
  Display.Text += (sender as Button).Text;
}

Für die Rechnung selbst reicht es dann, die jeweiligen Strings zu parsen, die in der Rechnung verwendet werden sollen.

https://msdn.microsoft.com/de-de/library/fd84bdyt(v=vs.110).aspx

1.) Variablennamen beginnen bitte mit Kleinbuchstaben.

2.) Buttons bitte etwas besser benennen.

3.) Was soll das "Zahl = Zahl / 10 +0.8" zB bitte sein?

4.) Den gesamten Code posten auf pastebin.

Woher ich das weiß:Studium / Ausbildung – Informatikstudium

ayyyyyyyyyyyy 
Beitragsersteller
 11.01.2018, 20:01

Teil 1      

     

    private void Anzeige()

    {

      textBox1.Text = Zahl.ToString();     

    }

    private void Anzeige2()

    {

      textBox1.Text = result.ToString();

    }

    public Form1()

    {

      InitializeComponent();

    }

    private void button1_Click(object sender, EventArgs e)

    {

      Zahl = Zahl * 10 + 0;

      Anzeige();

    }

    private void label1_Click(object sender, EventArgs e)

    {

    }

    private void Form1_Load(object sender, EventArgs e)

    {

    }

    private void button2_Click(object sender, EventArgs e)

    {

    }

    private void label2_Click(object sender, EventArgs e)

    {

    }

    private void button24_Click(object sender, EventArgs e)

    {

    }

    private void button20_Click(object sender, EventArgs e)

    {

      button20WasClicked = true;

    }

    private void button15_Click(object sender, EventArgs e)

    {

      if (button2WasClicked == false)

      {

        Zahl = Zahl * 10 + 8;

        Anzeige();

      }

      if (button2WasClicked == true)

      {

        Zahl = Zahl /10 + 0.8;

        Anzeige();

        button2WasClicked = false;

      }

    }

    private void button11_Click(object sender, EventArgs e)

    {

      if (button2WasClicked == false)

      {

        Zahl = Zahl * 10 + 6;

        Anzeige();

      }

      if (button2WasClicked == true)

      {

        Zahl = Zahl /10 + 0.6;

        Anzeige();

        button2WasClicked = false;

      }

    }

    private void button7_Click(object sender, EventArgs e)

    {

      if (button20WasClicked == true)

      {

        Zahl = Zahl2;

        Zahl = Zahl - 1;

        Anzeige();

        button20WasClicked = false;

      }

      else

       

        if (button2WasClicked == false)

        {

          Zahl = Zahl * 10 + 1;

          Anzeige();

         

      }

      if (button2WasClicked == true)

      {

        Zahl = Zahl / 10 + 0.1;

        Anzeige();

        button2WasClicked = false;

      }

    }

    private void textBox1_TextChanged(object sender, EventArgs e)

    {

    }

    private void button5_Click(object sender, EventArgs e)

    {

      if (button20WasClicked == true)

      {

        Zahl = Zahl2;

        Zahl = Zahl - 2;

        Anzeige();

        button20WasClicked = false;

      }

      else

      if (button2WasClicked == false)

      {

        Zahl = Zahl * 10 + 2;

        Anzeige();

      }

      if (button2WasClicked == true)

      {

        Zahl = Zahl /10 + 0.2;

        Anzeige();

        button2WasClicked = false;

      }

    }

    private void button6_Click(object sender, EventArgs e)

    {

      if (button20WasClicked == true)

      {

        Zahl = Zahl2;

        Zahl = Zahl *10 - 3;

        Anzeige();

        button20WasClicked = false;

      }

      else

      if (button2WasClicked == false)

      {

        Zahl = Zahl * 10 + 3;

        Anzeige();

      }

      if (button2WasClicked == true)

      {

        Zahl = Zahl /10 + 0.3;

        Anzeige();

        button2WasClicked = false;

      }

ayyyyyyyyyyyy 
Beitragsersteller
 11.01.2018, 20:02
@ayyyyyyyyyyyy

teil 2

  }

    private void button9_Click(object sender, EventArgs e)

    {

      if (button2WasClicked == false)

      {

        Zahl = Zahl * 10 + 4;

        Anzeige();

      }

      if (button2WasClicked == true)

      {

        Zahl = Zahl /10 + 0.4;

        Anzeige();

        button2WasClicked = false;

      }

    }

    private void button10_Click(object sender, EventArgs e)

    {

      if (button2WasClicked == false)

      {

        Zahl = Zahl * 10 + 5;

        Anzeige();

      }

      if (button2WasClicked == true)

      {

        Zahl = Zahl /10 + 0.5;

        Anzeige();

        button2WasClicked = false;

      }

    }

    private void button17_Click(object sender, EventArgs e)

    {

    }

    private void button18_Click(object sender, EventArgs e)

    {

      textBox1.Clear();

      Zahl = 0;

      Zahl2 = 0;

      button2WasClicked = false;

      button20WasClicked = false;

    }

    private void button19_Click(object sender, EventArgs e)

    {

    }         

    private void button8_Click(object sender, EventArgs e)

    {

      Operator = '-';           //MINUSTASTE

      Zahl2 = Zahl;

      Zahl = 0;

    }

    private void button3_Click(object sender, EventArgs e)

    {

      Operator = '+';           //PLUSTASTE

      Zahl2 = Zahl;

      Zahl = 0;

    }

    private void button4_Click(object sender, EventArgs e)

    {

      if (Operator == '+')

      {

        result = Zahl2 + Zahl;

        Anzeige2();

        Zahl = result;

        Zahl2 = result;

      }

      if (Operator == '-')

      {

        result = Zahl2 - Zahl;

        Anzeige2();

        Zahl = result;

        Zahl2 = result;

      }

      if (Operator == '*')

      {

        result = Zahl2 * Zahl;

        Anzeige2();

        Zahl = result;

        Zahl2 = result;

      }

      if (Operator == '/')

      {

        result = Zahl2 / Zahl;

        Anzeige2();

      }

      if (Operator == '%')

      {

      }

      if (Operator2 == Math.Sqrt(Zahl))

      {

        result = Math.Sqrt(Zahl);

        textBox1.Text = result.ToString();

        Zahl2 = Zahl;

      }

    }

     

    private void button16_Click(object sender, EventArgs e)

    {

      if (button2WasClicked == false)

      {

        Zahl = Zahl * 10 + 7;

        Anzeige();

      }

      if (button2WasClicked == true)

      {

        Zahl = Zahl /10 + 0.7;

        Anzeige();

        button2WasClicked = false;

      }

    }

    private void button14_Click(object sender, EventArgs e)

    {

      if (button2WasClicked == false)

      {

        Zahl = Zahl * 10 + 9;

        Anzeige();

      }

      if (button2WasClicked == true)

      {

        Zahl = Zahl /10 + 0.9;

        Anzeige();

        button2WasClicked = false;

      }

    }

    private void button12_Click(object sender, EventArgs e)

    {  

      Operator = '*';         //MALTASTE

      Zahl2 = Zahl;

      Zahl = 0;

    }

    private void button13_Click(object sender, EventArgs e)

    {

      Operator = '/';           //GETEILTDURCHTASTE

      Zahl2 = Zahl;

      Zahl = 0;

    }

    private void button27_Click(object sender, EventArgs e)

    {

      textBox1.Text = textBox1.Text + "√";

      Operator2 = Math.Sqrt(Zahl);      //WURZELTASTE

       

    }

    private void button2_Click_1(object sender, EventArgs e)

    {

      button2WasClicked = true;

    }

    private void button26_Click(object sender, EventArgs e)

    {    

    }

  }

}

regex9  12.01.2018, 01:28
@ayyyyyyyyyyyy

Jetzt mal ganz ehrlich: Hast du auch nur einmal nachgedacht, bevor du diese Kommentare hier gepostet hast? Was soll das, wieso klatscht du mitunter völlig irrelevanten Code unformatiert hier hinein und erwartest dazu noch Hilfe? Wer soll das bitteschön lesen?

Formatiere deinen Code, halte dich an die Konventionen, wie dir bereits geschrieben wurde und gebe den Methoden passende Namen.

ayyyyyyyyyyyy 
Beitragsersteller
 11.01.2018, 20:00

1,why immer variabelnnamen klein?

2,ja gut das könnt ich echt mal machen:D

3,Zahl=0 mal 10 + 8 (wenn ich nochmal auf 8 drücke würded dann 88 kommen anstatt 16

     

     

     

  

triopasi  11.01.2018, 20:03
@ayyyyyyyyyyyy

1.) Keine Ahnung wer sich das ursprünglich ausgedacht hat aber das hat sich so als guter Codestil etabliert.

2.) Gut.

3.) Und was ist das mit den "0.8"? Bastelst du dir alles durch sowas zusammen?