基礎 Windows Forms 程式,實作標準四則運算(加減乘除),針對 VS.NET 開發環境與 WinForms 程式模型初學者。
| 類型 | Name | Text | 說明 |
|---|---|---|---|
| Form | CalcForm | 計算機 | 主視窗 |
| Button | btn0~btn9 | 0~9 | 數字鍵 |
| Button | btnDot | . | 小數點 |
| Button | btnPlus | + | 加法 |
| Button | btnSub | - | 減法 |
| Button | btnMul | * | 乘法 |
| Button | btnDiv | / | 除法 |
| Button | btnEqu | = | 等號 |
| Button | btnClr | AC | 清除 |
| TextBox | txtCalc | (空) | 輸入/結果顯示,ReadOnly、RightToLeft |
double acc; // 運算元 A(累積結果)
double sec; // 運算元 B(當前輸入)
bool clear; // 下一數字鍵是否清空顯示
bool first; // 是否為第一個運算子
string oper; // 待執行運算子:+ - * / =
btnDot.Click += new EventHandler(btn_clk); // 數字鍵/小數點共用
btnPlus.Click += new EventHandler(btn_Oper); // 運算子共用
btnEqu.Click += new EventHandler(btn_Equ);
btnClr.Click += new EventHandler(btn_Clr);
EventHandler 委派封裝處理函式,sender 參數識別觸發來源按鈕。
void Calc() {
switch (oper) {
case "+": acc += sec; break;
case "-": acc -= sec; break;
case "*": acc *= sec; break;
case "/": acc /= sec; break;
}
oper = "="; first = true;
txtCalc.Text = acc.ToString();
sec = acc; // 支援連續運算:1+2+3=
}
first=true 時,首個運算子直接將 sec 指派給 acc(不執行運算)。Calc() 執行上一個運算,再記錄新運算子。sec = acc 使結果成為下一輪運算的左運算元,實現鏈式計算。此狀態機設計清晰分離「輸入數值」與「執行運算」兩個階段,是計算機邏輯的經典實作模式。