前提・実現したいこと
VBで電卓作成している初心者です
電卓機能の=を複数回押した時の定数計算を設定したいのですがうまくできません
2+2=4と表示されたあとにもう一度=を押すと6となるようにしたいです
該当のソースコード
Public Class Form1
Private CommaON As Boolean = False 'カンマ(.)の入力済みフラグ Private Subtotal As Double = 0 '小計 Private Total As Double = 0 '合計 Private btnSingnFrg As Boolean '計算直後のフラグ Private OldbtnSingn As String '前回の記号キー 'ByValで関数の値渡し 関数名(ByVal 引数名 As データ型) Private Sub btn0To9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Btn0.Click, btn1.Click, btn2.Click, btn3.Click, btn4.Click, btn5.Click, btn6.Click, btn7.Click, btn8.Click, btn9.Click, btnComma.Click '数字及びカンマのボタンを押した場合の処理 'ボタンの表面の文字を取得 CType・・変換コード Dim wk As String = CType(sender, Button).Text '下記の場合入力しない If Label1.Text = "0" And wk = "0" Or (CommaON = True And wk = ".") Then Exit Sub ElseIf Label1.Text = "0" Or btnSingnFrg = True Then '一番最初の入力及び計算直後の場合クリアする Label1.Text = "" btnSingnFrg = False '文字列の連結中 End If '入力されたキーをラベルに連結表示 Label1.Text &= wk '一番最初にカンマが入力された場合先頭に0を付加する If Label1.Text = "." Then CommaON = True '2個以上カンマが入力されないように監視する為の印 Label1.Text = "0." End If '入力中の文字を数値として一時保存 Subtotal = Double.Parse(Label1.Text) End Sub Private Sub btnSign_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles btnAsterisk.Click, btnC.Click, btnCE.Click, btnMinus.Click, btnPercent.Click, btnSlash.Click, btnEqual.Click, btnPlus.Click '記号のボタンが押された場合の処理 'ボタンの表面の文字を取得 Dim wk As String = CType(sender, Button).Text If Total <> 0 And Subtotal = 0 Then OldbtnSingn = wk Exit Sub End If If (wk = "-" Or wk = "×" Or wk = "÷") And Total = 0 Then If Total = 0 And Subtotal <> 0 Then Total = Subtotal End If OldbtnSingn = wk Subtotal = 0 btnSingnFrg = True Exit Sub End If 'Select case 複数の条件により処理を分岐させたい Select Case wk Case "+" Label1.Text = (Total + Subtotal).ToString Case "-" Label1.Text = (Total - Subtotal).ToString Case "×" Label1.Text = (Total * Subtotal).ToString Case "÷" Label1.Text = (Total / Subtotal).ToString Case "C" Label1.Text = (Total - Total).ToString Case "CE" Case "=" Select Case OldbtnSingn Case "+" Label1.Text = (Total + Subtotal).ToString Case "-" Label1.Text = (Total - Subtotal).ToString Case "×" Label1.Text = (Total * Subtotal).ToString Case "÷" Label1.Text = (Total / Subtotal).ToString End Select End Select Total = Double.Parse(Label1.Text) CommaON = False Subtotal = 0 btnSingnFrg = True OldbtnSingn = wk Select Case Dim count As Integer = 0 btnEqual_click(ByVal sender As System.Object, ByVal e As System.EventArgs) '=が二回連続で押された時に前回入力した数値と演算子で再度計算する 'Dim wk As String = CType(sender, Button).Text 'ボタンが押された回数 End Select End Sub
End Class
試したこと
ネット検索4時間