C#を始めて1週間足らずで、理解が追いついていないところも多々あるので、
お力をお貸しください。。。
現在、C#にて電卓の作成をしております。
ですが、どうにも
1+2+3のような、連続した計算のやり方がわかりません。
iPhoneの計算機のような計算がしたいです。
該当のソースコード
C#
1namespace WindowsFormsApp1 2{ 3 public partial class Form1 : Form 4 { 5 public Form1() 6 { 7 InitializeComponent(); 8 } 9 10 bool isFirst = true; 11 decimal num1 = 0; 12 13 //数字のボタンを押したとき 14 private void Number_Click(object sender, EventArgs e) 15 { 16 if (sign != arithmetic.undefined && isFirst) 17 { 18 num1 = Convert.ToDecimal(textDisplay.Text); 19 textDisplay.Text = ""; 20 isFirst = false; 21 } 22 23 if (textDisplay.TextLength == 10) 24 { 25 return; 26 } 27 28 textDisplay.Text = 29 textDisplay.Text + ((Button)sender).Text; 30 31 } 32 33 //小数点を押したとき 34 private void Dot_Click(object sender, EventArgs e) 35 { 36 if (textDisplay.Text.IndexOf(".") >= 0) 37 { 38 return; 39 } 40 textDisplay.Text = textDisplay.Text + "."; 41 } 42 43 //四則演算 44 enum arithmetic 45 { 46 undefined,ADD,SUB,MUL,DIV 47 }; 48 arithmetic sign = arithmetic.undefined; 49 50 //足し算 51 ★private void ADD_Click(object sender, EventArgs e) 52 { 53 sign = arithmetic.ADD; 54 isFirst = true; 55 } 56 57 //引き算 58 ★private void SUB_Click(object sender, EventArgs e) 59 { 60 sign = arithmetic.SUB; 61 isFirst = true; 62 } 63 64 //掛け算 65 ★private void MUL_Click(object sender, EventArgs e) 66 { 67 sign = arithmetic.MUL; 68 isFirst = true; 69 70 } 71 72 //割り算 73 ★private void DIV_Click(object sender, EventArgs e) 74 { 75 sign = arithmetic.DIV; 76 isFirst = true; 77 78 } 79 80 //イコールを押したとき 81 private void Equal_Click(object sender, EventArgs e) 82 { 83 decimal num2 = decimal.Parse(textDisplay.Text); 84 decimal Result = 0; 85 86 //switch構文 87 switch (sign) { 88 case arithmetic.ADD: 89 Result = num1 + num2; 90 break; 91 case arithmetic.SUB: 92 Result = num1 - num2; 93 break; 94 case arithmetic.MUL: 95 Result = num1 * num2; 96 break; 97 case arithmetic.DIV: 98 Result = num1 / num2; 99 break; 100 default: 101 num1 = num2; 102 break; 103 } 104 105 //結果表示 106 textDisplay.Text = Result.ToString(); 107 isFirst = true; 108 109 if (textDisplay.TextLength >= 11) 110 { 111 textDisplay.Text = "Error"; 112 113 //エラー時、クリアボタン以外を無効化する 114 this.button0.Enabled = false; 115 this.button1.Enabled = false; 116 this.button2.Enabled = false; 117 this.button3.Enabled = false; 118 this.button4.Enabled = false; 119 this.button5.Enabled = false; 120 this.button6.Enabled = false; 121 this.button7.Enabled = false; 122 this.button8.Enabled = false; 123 this.button9.Enabled = false; 124 this.buttonEq.Enabled = false; 125 this.Dot.Enabled = false; 126 this.ADD.Enabled = false; 127 this.SUB.Enabled = false; 128 this.MUL.Enabled = false; 129 this.DIV.Enabled = false; 130 } 131 132 } 133 134 //クリアボタンを押したとき 135 private void Clear_Click(object sender, EventArgs e) 136 { 137 textDisplay.Clear(); 138 139 this.button0.Enabled = true; 140 this.button1.Enabled = true; 141 this.button2.Enabled = true; 142 this.button3.Enabled = true; 143 this.button4.Enabled = true; 144 this.button5.Enabled = true; 145 this.button6.Enabled = true; 146 this.button7.Enabled = true; 147 this.button8.Enabled = true; 148 this.button9.Enabled = true; 149 this.buttonEq.Enabled = true; 150 this.Dot.Enabled = true; 151 this.ADD.Enabled = true; 152 this.SUB.Enabled = true; 153 this.MUL.Enabled = true; 154 this.DIV.Enabled = true; 155 } 156 157 158 } 159}
解決したならベストアンサーを選択してください。
完成までサポートするものではなく、一つの問題に対して一つの回答をするものです。