環境:VisualStudioのFormアプリ.NET6.0
C#を用いて電卓アプリの作成を行っています。
四則演算及びクリアキーのコーディングを終えたのですが、以下の実装が出来ておりません。
①計算後、数字を入力した際に値をクリアして入力
例) 3 + 3 = "6" ⇒ "1"を入力した際に"61"となってしまいますが、実際は"1"と表記させたいです
②ラベルに表記される値を3桁毎に区切る
一つ一つのイベントに実装するのではなく、クラスにコーディングしたいと考えています。
C#
1 public partial class Form1 : Form 2 { 3 4 // 四則演算代入 5 String Oper = ""; 6 7 // 最初に入力する値 8 double num1 = 0; 9 10 // 2度目に入力する値 11 double num2 = 0; 12 13 public Form1() 14 { 15 InitializeComponent(); 16 } 17 18 private void Form1_Load(object sender, EventArgs e) 19 { 20 21 } 22 23 private void ButtonNumber_Click(object sender, EventArgs e)// 数字の番号を押した時 24 { 25 // 数値の入力 後方への追加 26 String text = labelResult.Text + ((Button)sender).Text; 27 28 // String型の変数textをdouble型の変数Nに変換 29 double N = Convert.ToDouble(text); 30 31 // double型の変数NをString型の変数text2に変換 最初のtext0を削除 32 String text2 = N.ToString(); 33 34 // 0を削除した上で数値をlabelResultに入力 35 // 3桁ごとに","を実装 36 labelResult.Text = String.Format("{0:#,0}",text2); 37 38 } 39 40 private void ButtonAllClear_Click(object sender, EventArgs e) 41 { 42 // labelResultに入力された値を削除 43 labelResult.Text = ""; 44 } 45 46 47 private void buttonPoint_Click_1(object sender, EventArgs e) // 小数点を押した時 48 { 49 // 小数点が一度使われていれば 50 if (labelResult.Text.IndexOf(".") >= 0) 51 { 52 //入力せずに戻る 53 return; 54 } 55 //labelResultに"."を入力 56 labelResult.Text = labelResult.Text + "."; 57 } 58 59 private void buttonOperator_Click(object sender, EventArgs e) // ÷×−+ のボタンを押した時 60 { 61 // 四則演算記号の代入 62 Button btn = (Button)sender; 63 64 // 演算方法の選択 65 switch (btn.Text) 66 { 67 68 case "÷": 69 Oper = "÷"; 70 break; 71 72 case "×": 73 Oper = "×"; 74 break; 75 76 case "+": 77 Oper = "+"; 78 break; 79 80 case "-": 81 Oper = "-"; 82 break; 83 84 } 85 86 // labelResult.Textの値をnum1に入力 87 num1 = double.Parse(labelResult.Text); 88 89 // labelResult.Textの値を0に 90 labelResult.Text = "0" ; 91 } 92 93 private void buttonEqual_Click(object sender, EventArgs e) // = ボタンを押した時 94 { 95 // labelResult.Textをdouble型に変換 96 num2 = double.Parse(labelResult.Text); 97 98 // 計算結果Resultを定義 99 double Result = 0; 100 101 // 四則演算パターン 102 if (Oper == "÷") 103 { 104 Result = num1 / num2; 105 } 106 else if (Oper == "×") 107 { 108 Result = num1 * num2; 109 } 110 else if (Oper == "-") 111 { 112 Result = num1 - num2; 113 } 114 else if (Oper == "+") 115 { 116 Result = num1 + num2; 117 } 118 119 if (Result >= 9999999999999999) 120 121 { 122 labelResult.Text = "9999999999999999999"; 123 } 124 else if (Result <= 9999999999999999) 125 { 126 // ResultをlabelResult.Textに代入 127 labelResult.Text = Result.ToString(); 128 129 } 130 131 132 133 134 } 135 136 private void buttonInversion_Click(object sender, EventArgs e) 137 { 138 String inv = labelResult.Text; 139 double Inv = Convert.ToDouble(inv); 140 Inv = Inv * (-1); 141 labelResult.Text = Inv.ToString(); 142 143 } 144 145 private void ButtonClear_Click(object sender, EventArgs e) 146 { 147 labelResult.Text = Convert.ToString(num1); 148 } 149 }
以上2点に関してご指導ご鞭撻いただけますと幸いです。
よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー