WinForms示例项目:使用MaterialSkin控件实现一个简易计算器

该文章已生成可运行项目,

项目概述

本文介绍如何使用C# WinForms和MaterialSkin控件库创建一个美观实用的计算器应用。该项目结合了Material Design设计语言,支持完整的四则运算功能,并通过尺寸优化实现了完美的视觉体验。

GitCode地址MaterialCalculator

实现过程

计算逻辑

实现连续计算功能,支持复杂的运算表达式:

private double result = 0;
private string lastOperation = "";
private bool newOperation = true;

private void PerformCalculation(double value)
{
    switch (lastOperation)
    {
        case "+": result += value; break;
        case "-": result -= value; break;
        case "×": result *= value; break;
        case "÷": 
            if (value != 0) 
                result /= value; 
            else 
                throw new DivideByZeroException("不能除以零");
            break;
    }
}

关键特性

Material Design主题
var materialSkinManager = MaterialSkinManager.Instance;
materialSkinManager.AddFormToManage(this);
materialSkinManager.Theme = MaterialSkinManager.Themes.LIGHT;
materialSkinManager.ColorScheme = new ColorScheme(
    Primary.Blue800,     // 主色调
    Primary.Blue900,     // 深色调
    Primary.Blue500,     // 浅色调
    Accent.LightBlue200, // 强调色
    TextShade.WHITE      // 文字颜色
);
错误处理

完善的异常处理机制,确保程序稳定运行:

try
{
    double currentValue = double.Parse(txtDisplay.Text);
    PerformCalculation(currentValue);
}
catch (DivideByZeroException)
{
    MessageBox.Show("不能除以零!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
    ClearAll();
}
catch (Exception ex)
{
    MessageBox.Show($"计算错误: {ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
快捷键支持
// 菜单栏快捷键
this.aboutToolStripMenuItem.Text = "关于(&A)";  // Alt+A
this.exitToolStripMenuItem.Text = "退出(&X)";    // Alt+X

// 数字按钮快捷输入(可通过键盘输入)

功能亮点

  1. 连续计算:支持如 1 + 2 + 3 = 6 的连续运算
  2. 实时纠错:自动处理除零等错误情况
  3. 美观界面:Material Design设计,色彩协调
  4. 响应式布局:按钮大小适中,触控友好
  5. 完整功能:包括CE、C、退格、正负号转换等

编译与运行 (具体方法可打开项目README.md文件查看)

  1. 克隆或下载项目源码
  2. 使用Visual Studio打开解决方案
  3. 还原NuGet包或添加MaterialSkin引用
  4. 按F5编译运行
本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值