第三课输入和显示——C#计算器编程教学

26 篇文章 0 订阅
23 篇文章 0 订阅
首先完成输入功能。
前面讲到了那个语句cacl.EnterString(key);
那么,方法EnterString(string str)是必须有的,而且是public。

最先想到的循环语句是什么呢?想想界面上的Button的Text,都是不同的,但有只是输入的,有功能键的,所以要有判断,判断的循环有while和switch case,这里当然是swich case了。代码如下:

        public void EnterString(string str)
        {
            switch (str)
            {
                case "1":
                case "2":
                case "3":
                case "4":
                case "5":
                case "6":
                case "7":
                case "8":
                case "9":
                case "0":
                    AddCaclString(false, false, str);
                    break;
                case ".":
                    AddCaclString(true, false, str);
                    break;
                case "÷":
                case "/":
                case "×":
                case "*":
                case "-":
                case "+":
                case "%":
                    AddCaclString(false, true, str);
                    break;
                case "MC":
                    MemoryClear();
                    break;
                case "MR":
                    MemoryRecall();
                    break;
                case "MS":
                    MemorySave();
                    break;
                case "M+":
                    MemoryAdd();
                    break;
                case "M-":
                    MemorySubtract();
                    break;
                case "←":
                    Backspace();
                    break;
                case "CE":
                    ClearEnter();
                    break;
                case "C":
                    ClearAll();
                    break;
                case "±":
                    Contrary();
                    break;
                case ")":
                    SetContrary();
                    break;
                case "√":
                    Square();
                    break;
                case "1/x":
                    Reciproc();
                    break;
                case "=":
                    RunCaclEqual();
                    break;
                default:
                    break;
            }
        }

先简单点,那个AddCaclString方法代码先作如下设计,用于测试输入效果。

private void AddCaclString(bool isDecimal, bool isOP, string str)
{
        CaclString += str;
}
下面是两字段封装:

public string Result
{
    get { return result; }
    set { result = value; }
}
private string result;
public string CaclString
{
    get { return caclString; }
    set { caclString = value; }
}
private string caclString = "";
运行程序。点击数字键,是否程序没反应?
这就对了,写到这里有反应就怪了。
缺少什么呢?有经验的一定会想到变量改变没有通知界面。
对了,Cacl需要实现通知界面的接口。这个接口名叫INotifyPropertyChanged
具体代码自己查,查ViewModelBase就可以了。Cacl添加继承ViewModelBase,修改封装的字段如下:

public string CaclString
{
    get { return caclString; }
    set
    {
        caclString = value; 
        RaisePropertyChanged("CaclString");//有的叫OnPropertyChanged
     }
}
再运行程序,是否有效果了?
第三课结语。第二第三课其实讲了一个编程思想,就是如WPF中的MVVM模式。界面和代码编程时可分离,用绑定和通知联系在一起。这样就不用老是this.xxx.Text=XX,或者XX=this.xxx.Text了。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
WPF(Windows Presentation Foundation)是一种用于创建Windows应用程序的界面开发技术,其基于.NET Framework平台,并使用C#编程语言进行开发。WPF提供了一套强大的工具和框架,使开发人员能够轻松创建富有吸引力、功能丰富的用户界面。 WPF与传统的Windows Forms相比具有许多优势。首先,WPF支持更加灵活和现代化的用户界面设计,可以轻松地创建透明、动画和多媒体效果等视觉效果。其次,WPF具有更好的分离性,允许开发人员将界面逻辑与业务逻辑进行分离,使代码更加清晰和易于维护。此外,WPF还支持数据绑定和样式模板等功能,使界面开发更加高效和可重用。 在使用WPF进行编程时,首先需要了解XAML(Extensible Application Markup Language)语言,它用于定义WPF界面元素和布局。然后,使用C#语言编写代码逻辑,处理用户交互、数据绑定、事件处理等方面的功能。在WPF中,可以通过使用命令模式和MVVM(Model-View-ViewModel)架构来组织和管理代码,以实现更好的代码分离性。 另外,WPF提供了丰富的控件库,开发人员可以使用这些控件来构建各种功能和复杂的界面。同时,WPF还支持自定义控件的开发,开发人员可以根据具体需求创建自己的控件。 总之,WPF是一种强大的界面开发技术,可以帮助开发人员创建出具有丰富功能和吸引力的Windows应用程序。同时,使用C#语言进行开发可以使开发过程更加高效和灵活。无论是初学者还是有经验的开发人员,都可以从WPF编程宝典中学习到丰富的知识和技巧,提高自己的WPF编程能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落单枫叶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值