C#WPF入门

1.引言

WPF(Windows Presentation Fundation)是基于windows窗口的用户界面(User Interface)框架,在.NET framework框架下,开发交互图形界面。它支持多种设计方法,可直接使用工具箱拖拽创建控件,也可以通过xmal,cs语言接口设计。

在cs内编辑控件触发事件函数,实现交互算法设计。

本次实验完成简易计算机的ui设计,及其功能实现。

 

2.设计报告

  • 项目简介

使用wpf框架编写简易计算器,实现加减乘除运算,数域为有理数域。

  • 设计步骤

首先在xaml文件内进行ui界面设计,根据交互逻辑,控件主要组成为显示区(TextBox),数字按键(Button),运算符按键(Button),清零,小数,等于按键(Button)。

参照ios系统calculater设计界面,选择了橙蓝配色。扁平化设计,没有使用按键悬浮或按下特效。

接下来完成算法实现,引入三个变量temp, blnClear, strOper维护计算过程。

运算(本算法实现单运算符从左至右运算)流程主要是:输入新数字,输入下一运算符;初始状态可视为数字0,运算符+。

  • 关键技术

UI页面排版:

    利用标签,包含ColumnDefinitions, RowDefinitions, ColumnSpan, RowSpan等方法。完成页面扁平排版。

   
       
            ...
       
...
   

    0

 

控件外观统一设置:

    在Window.Resource下编辑统一格式
   

 

计算算法:

    temp用于记录临时计算结果,blnClear表示下一次键入数字是显示区是否清零(可通过上次键入类型判断),strOper记录最新键入的运算符。

    则数字按键,运算按键(+,-,*,/)具有较好的相似结构,可以抽象为基础事件。其余按键独立实现即可。

        private void BtnNum_Click(object sender, RoutedEventArgs e)
        {
            if (blnClear)
            {
                number.Text = "0";
                blnClear = false;
            }
            Button b1 = (Button)sender;
            if (number.Text != "0")
                number.Text += b1.Content;
            else
                number.Text = b1.Content.ToString();
        }
        
        private void BtnOperator_Click(object sender, RoutedEventArgs e)
        {
            double dbSecond = Convert.ToDouble(number.Text);
            if (!blnClear)
            {
                switch (strOper)
                {
                    case "+":
                        temp += dbSecond;
                        break;

                    case "-":
                        temp -= dbSecond;
                        break;

                    case "*":
                        temp *= dbSecond;
                        break;

                    case "/":
                        temp /= dbSecond;
                        break;
                }
            }
            if (sender == btn_add)
                strOper = "+";
            if (sender == btn_sub)
                strOper = "-";
            if (sender == btn_mul)
                strOper = "*";
            if (sender == btn_div)
                strOper = "/";
            number.Text = Convert.ToString(temp);
            blnClear = true;
        }

事件函数路由

    又RoutedEventHandler()引用基础事件,在MainWindow中声明即可。

    btn_0.Click += new RoutedEventHandler(BtnNum_Click);

    btn_add.Click += new RoutedEventHandler(BtnOperator_Click);

  • 运行效果

2 + 3 =

C#WPF入门_第1张图片

3.6 / 2 =

C#WPF入门_第2张图片

 

你可能感兴趣的:(C#WPF入门)