用C#设计一个计算器的核心在于窗体布局设计、事件逻辑处理、运算符优先级实现以及异常捕获。通过Windows Forms快速构建交互界面,结合C#的面向对象特性实现四则运算功能,并利用try-catch
机制确保除零等操作的安全性。以下是关键实现步骤:
-
环境配置与项目创建
安装Visual Studio后新建Windows Forms应用项目,拖拽TextBox
(显示输入/结果)和Button
控件(数字0-9、运算符、等号)至窗体。建议将控件命名规范化,如btnAdd
、txtDisplay
,便于后续代码维护。 -
事件绑定与输入处理
为数字按钮编写统一事件处理方法,通过sender
参数识别被点击的按钮,避免重复代码。例如:csharp复制
private void btnNumber_Click(object sender, EventArgs e) { if (txtDisplay.Text == "0" || isNewInput) txtDisplay.Clear(); txtDisplay.Text += ((Button)sender).Text; isNewInput = false; }
运算符按钮需记录当前操作符(如
+
、-
)和第一个操作数,使用List<double>
和List<char>
存储多级运算表达式。 -
运算逻辑与优先级
通过逆波兰算法或递归解析处理运算符优先级。简化版可直接计算:csharp复制
private double Calculate(double num1, double num2, char op) { switch (op) { case '+': return num1 + num2; case '-': return num1 - num2; case '*': return num1 * num2; case '/': if (num2 == 0) throw new DivideByZeroException(); return num1 / num2; default: throw new InvalidOperationException(); } }
-
异常处理与用户体验
使用try-catch
捕获格式转换错误或除零异常,并通过MessageBox
提示用户:csharp复制
try { result = Calculate(prevValue, currentValue, currentOp); } catch (DivideByZeroException) { MessageBox.Show("除数不能为零", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); }
-
界面优化与扩展功能
添加清除(C
)、退格(←
)按钮,设置TextBox
文本右对齐。进阶可扩展科学计算功能(如平方根、三角函数),或改用WPF实现更灵活的UI动画。
掌握这些步骤后,可进一步封装为可复用的控件库或移植到.NET MAUI跨平台应用。建议通过单元测试验证边界条件,确保计算精度与稳定性。