申し訳ございません。
今一度、どなたかお付き合いお願いいたします。
「=」を続けて押した場合の定数計算ができません。(ソースコードをどのようにいじればいいのか…(汗)
足し算の場合は「×2」されているようで、
それ以外の引き算、掛け算、割り算の場合は答えが毎回「0」になってしまいます。
(「2 + 2 = 4」から=を続けていくと、8、16、32と続きます。
「9 × 2 = 18」から=を押すと、0になります。掛け算、割り算も同様の問題です)
C#をはじめて、1週間弱ほどの初心者です。
よろしくお願いいたします。
※数値のボタンを「btnNumber」で一纏めに、
液晶にあたる部分をTextBoxで作り「txtDisplay」と名づけてあります。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Cal
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
bool isFirst = true;
decimal 値1 = 0;
private void btnNumber_Click(object sender, EventArgs e)
{
if (isFirst)
{
txtDisplay.Text = "";
isFirst = false;
}
String text = txtDisplay.Text + ((Button)sender).Text;
decimal d = Convert.ToDecimal(text);
String text2 = d.ToString();
txtDisplay.Text = text2;
}
//クリア。
private void btnC_Click(object sender, EventArgs e)
{
演算 = 四則演算の記号.未定義;
txtDisplay.Text = "0";
値1 = 0;
isFirst = true;
}
enum 四則演算の記号 { 未定義, ADD, SUB, MUL, DIV };
四則演算の記号 演算 = 四則演算の記号.未定義;
//足し算。
private void btnAdd_Click(object sender, EventArgs e)
{
if (!isFirst) calc();
演算 = 四則演算の記号.ADD;
}
//引き算。
private void btnSub_Click(object sender, EventArgs e)
{
if (!isFirst) calc();
演算 = 四則演算の記号.SUB;
}
//掛け算。
private void btnMul_Click(object sender, EventArgs e)
{
if (!isFirst) calc();
演算 = 四則演算の記号.MUL;
}
//割り算。
private void btnDiv_Click(object sender, EventArgs e)
{
if (!isFirst) calc();
演算 = 四則演算の記号.DIV;
}
//イコール。
private void btnEqu_Click(object sender, EventArgs e)
{
calc();
}
private void calc()
{
decimal 値2 = Convert.ToDecimal(txtDisplay.Text);
switch (演算)
{
case 四則演算の記号.ADD:
値1 += 値2;
break;
case 四則演算の記号.SUB:
値1 -= 値2;
break;
case 四則演算の記号.MUL:
値1 *= 値2;
break;
case 四則演算の記号.DIV:
値1 /= 値2;
break;
default:
値1 = 値2;
break;
}
txtDisplay.Text = 値1.ToString();
isFirst = true;
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}