/// <summary> /// 計算処理 /// </summary> /// <param name="md">メインディスプレイTextBox</param> /// <param name="keyCode">演算キー</param> /// <returns>bool</returns> public bool CalcMain(TextBox md, CalcKeyCode keyCode) { //前回の計算結果を左辺にシフト Prop.MemNum = Prop.Result; //前回押下された演算キーをシフト Prop.CalcKeyMem2 = Prop.CalcKeyMem1; if (keyCode != CalcKeyCode.Equals) { //今回押下された演算キーを記憶 イコールは記憶しない Prop.CalcKeyMem1 = keyCode; } //演算キー連続押下はイコール以外は計算しない if (Prop.CalcPush == false || keyCode == CalcKeyCode.Equals) { //前回押下された演算キーで計算 switch (Prop.CalcKeyMem2) { //加算 case CalcKeyCode.Sum: Prop.Result = Prop.MemNum + Prop.InputNum; break; //減算 case CalcKeyCode.Diff: Prop.Result = Prop.MemNum - Prop.InputNum; break; //乗算 case CalcKeyCode.Pro: Prop.Result = Prop.MemNum * Prop.InputNum; break; //除算 0 case CalcKeyCode.Quoti when Prop.MemNum != 0 && Prop.InputNum == 0: //0で除算 md.Text = Msg.ZERO_JYOZAN; Prop = new CalcProperty(); return(false); //除算 case CalcKeyCode.Quoti: Prop.Result = Prop.MemNum / Prop.InputNum; if (double.IsNaN(Prop.Result)) { //演算結果が非数の場合0 md.Text = Msg.NaN_ERR; Prop = new CalcProperty(); return(false); } break; //前回押下演算キーなし case CalcKeyCode.None: if (double.TryParse(md.Text, out var res)) { Prop.Result = res; } break; } } //計算結果表示 md.Text = Prop.Result.ToString(); //演算キー押下フラグON Prop.CalcPush = true; return(true); }
/// <summary> /// クリアキー /// </summary> /// <param name="md">メインディスプレイTextBox</param> public void Clear(TextBox md) { //全ての値を初期化 Prop = new CalcProperty(); md.Text = "0"; }