精华内容
参与话题
问答
  • c# 计算器

    千次阅读 2015-05-09 21:42:58
    c# 编写计算器的总结

    老师更改了团队的学习方向,可怜的opencv才学了一点有要学c#了,这是学c#计算器制作的一点感想吧。

    计算器是学习了《c#精彩实例教程》的代码。

    1、在计算器中,代码把显示端和输出端分开而又合成了,本来的想法是,分两个方向,一个主要在textbox中输出计算的值,另一个在后台进行计算。感觉代码量会很多。在这个程序中,计算的为textbox显示的数字,通过Doublel.Parse()将string变诶double类型,减小了代码量,感觉十分精妙。

    2、相同的类型都放在一个方法中,比如+-*/=都放在OperatorCal(int MyOperator)中了,把相同类型的运算放在了一个方法中,使代码更简洁明了。

    3、对计算过程中小数点的处理,因为一次只能有一个小数点,所以建立一个全局变量对本次是否已经输入小数点进行了记录。并且考虑了如果前一个输入是-的情况,是之更易用。因为textbox中本身最后一个就为小数点,所以只需要更改DecimalFlag,不需要对textbox进行操作,同时也达到了输入多个小数点对以后的小数点忽略的作用。

    4、通过LastInput记录上一步做的工作,通过检测LastInput就可以和本步互通。

    展开全文
  • 好东西C#计算器代码C#计算器代码C#计算器代码C#计算器代码C#计算器代码
  • C# 计算器

    热门讨论 2007-11-27 10:52:13
    实现功能: 模拟微软计算器界面,实现四则混合运算 1.键盘输入(KeyUp事件) 2.无焦点(按钮失去焦点) 3.实现优先级运算。比如直接输入1-2*3=-5,而不是微软计算器的-3 4.使用操作工厂,使用接口...
  • C#计算器

    2015-03-20 14:45:57
    C# 版全能计算器
  • C#计算器设计

    千次阅读 2019-06-11 13:03:40
    C#计算器设计 1.掌握计算器界面设计的方法。 2.掌握和分析需求,并根据需求实现相应的功能 。 3.熟悉系统调试等相关能力,形成初步的有实用意义的计算器程序。 计算器运行结果如下: public static List<char&...

    C#计算器设计

    1.掌握计算器界面设计的方法。
    2.掌握和分析需求,并根据需求实现相应的功能 。
    3.熟悉系统调试等相关能力,形成初步的有实用意义的计算器程序。

    计算器运行结果如下:
    在这里插入图片描述

     public static List<char> inputStr = new List<char>(1000); //用户的输入
            public Form1()
            {
                InitializeComponent();
            }
    
    
            private void Form1_Load(object sender, EventArgs e)
            {
    
            }
    
            private void btn_0_Click(object sender, EventArgs e)
            {
    
                inputStr.Add('0');
    
                richTextBox1.AppendText("0");
    
            }
            private void btn_Dot_Click(object sender, EventArgs e)
            {
                inputStr.Add('.');
                richTextBox1.AppendText(".");
            }
    
            private void btn_1_Click(object sender, EventArgs e)
            {
                inputStr.Add('1');
    
                richTextBox1.AppendText("1");
    
            }
    
            private void btn_2_Click(object sender, EventArgs e)
            {
                inputStr.Add('2');
    
                richTextBox1.AppendText("2");
    
            }
    
            private void btn_3_Click(object sender, EventArgs e)
            {
                inputStr.Add('3');
    
                richTextBox1.AppendText("3");
    
            }
    
            private void btn_4_Click(object sender, EventArgs e)
            {
                inputStr.Add('4');
    
                richTextBox1.AppendText("4");
    
            }
    
            private void btn_5_Click(object sender, EventArgs e)
            {
                inputStr.Add('5');
    
                richTextBox1.AppendText("5");
    
            }
    
            private void btn_6_Click(object sender, EventArgs e)
            {
                inputStr.Add('6');
    
                richTextBox1.AppendText("6");
    
            }
    
            private void btn_7_Click(object sender, EventArgs e)
            {
                inputStr.Add('7');
    
                richTextBox1.AppendText("7");
    
            }
    
            private void btn_8_Click(object sender, EventArgs e)
            {
                inputStr.Add('8');
    
                richTextBox1.AppendText("8");
    
            }
    
            private void btn_9_Click(object sender, EventArgs e)
            {
                inputStr.Add('9');
    
                richTextBox1.AppendText("9");
    
            }
    
            private void btn_Left_Click(object sender, EventArgs e)
            {
                inputStr.Add('(');
    
                richTextBox1.AppendText("(");
    
            }
    
            private void btn_Rig_Click(object sender, EventArgs e)
            {
                inputStr.Add(')');
    
                richTextBox1.AppendText(")");
    
            }
    
            private void btn_Equal_Click(object sender, EventArgs e)
            {
                //等号代码
    
                richTextBox1.AppendText("=");
    
                richTextBox1.Text = richTextBox1.Text;
    
                richTextBox1.Text = DataOp.DataMain();
    
                string temp = DataOp.DataMain();
    
                inputStr.Clear();
    
                for (int i = 0; i < temp.Length; i++)
                {
    
                    inputStr.Add(temp[i]);
    
                }
    
            }
    
            private void btn_Add_Click(object sender, EventArgs e)
            {
                inputStr.Add('+');
    
                richTextBox1.AppendText("+");
    
            }
    
            private void btn_Subt_Click(object sender, EventArgs e)
            {
                inputStr.Add('-');
                richTextBox1.AppendText("-");
            }
            private void btn_Mul_Click(object sender, EventArgs e)
            {
                inputStr.Add('×');
                richTextBox1.AppendText("×");
            }
            private void btn_Divi_Click(object sender, EventArgs e)
            {
                inputStr.Add('÷');
                richTextBox1.AppendText("÷");
            }
            private void btn_Ce_Click(object sender, EventArgs e)
            {
                richTextBox1.Text = "";
                inputStr.Clear(); //清空链表的所有元素
            }
            private void btn_C_Click(object sender, EventArgs e)
            {
                //界面撤销
                inputStr.RemoveAt(inputStr.Count - 1);
                richTextBox1.Text = "";
                for (int i = 0; i < inputStr.Count; i++)
                {
                    richTextBox1.Text += inputStr[i];
                }
            }
    

    美化设计主要是计算器背景优化和控件的透明度。使控件透明来陪衬背景,以此增加视觉效果,变得更美观。
    而透明度更改只需更改控件属性即可,例如btn_1:

     this.btn_1.BackColor = System.Drawing.Color.Transparent;
                this.btn_1.FlatAppearance.BorderSize = 0;
                this.btn_1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
                this.btn_1.Font = new System.Drawing.Font("仿宋", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
                this.btn_1.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
                this.btn_1.Location = new System.Drawing.Point(16, 239);
                this.btn_1.Margin = new System.Windows.Forms.Padding(4);
                this.btn_1.Name = "btn_1";
                this.btn_1.Size = new System.Drawing.Size(83, 45);
                this.btn_1.TabIndex = 11;
                this.btn_1.Text = "1";
                this.btn_1.UseVisualStyleBackColor = false;
                this.btn_1.Click += new System.EventHandler(this.btn_1_Click);
    

    0-9数字由button控件控制运行,0-9数字的设计代码:

     private void btn_0_Click(object sender, EventArgs e)
            {
    
                inputStr.Add('0');
    
                richTextBox1.AppendText("0"); 
            
    //1-9的代码以此类推 
    //显示屏由控件richTextBox构成。
    //运算符号包括:+-/*和()运算符号代码:
            private void btn_Left_Click(object sender, EventArgs e)
            {
                inputStr.Add('(');
    
                richTextBox1.AppendText("(");
    
            }
    
            private void btn_Rig_Click(object sender, EventArgs e)
            {
                inputStr.Add(')');
    
                richTextBox1.AppendText(")");
    
            }
    
            private void btn_Equal_Click(object sender, EventArgs e)
            {
                //等号代码
    
                richTextBox1.AppendText("=");
    
                richTextBox1.Text = richTextBox1.Text;
    
                richTextBox1.Text = DataOp.DataMain();
    
                string temp = DataOp.DataMain();
    
                inputStr.Clear();
    
                for (int i = 0; i < temp.Length; i++)
                {
    
                    inputStr.Add(temp[i]);
    
                }
    
            }
    
            private void btn_Add_Click(object sender, EventArgs e)
            {
                inputStr.Add('+');
    
                richTextBox1.AppendText("+");
    
            }
    
            private void btn_Subt_Click(object sender, EventArgs e)
            {
                inputStr.Add('-');
                richTextBox1.AppendText("-");
            }
            private void btn_Mul_Click(object sender, EventArgs e)
            {
                inputStr.Add('×');
                richTextBox1.AppendText("×");
            }
            private void btn_Divi_Click(object sender, EventArgs e)
            {
                inputStr.Add('÷');
                richTextBox1.AppendText("÷");
            }
    //界面的清空和撤销:
     private void btn_Ce_Click(object sender, EventArgs e)
            {
                richTextBox1.Text = "";
                inputStr.Clear(); //清空链表的所有元素
            }
            private void btn_C_Click(object sender, EventArgs e)
            {
                //界面撤销
                inputStr.RemoveAt(inputStr.Count - 1);
                richTextBox1.Text = "";
                for (int i = 0; i < inputStr.Count; i++)
                {
                    richTextBox1.Text += inputStr[i];
                }
            }
    
    展开全文
  • c#计算器

    2018-02-18 20:08:00
    1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text;... 8 u...
        

      1 using System;
      2 using System.Collections.Generic;
      3 using System.ComponentModel;
      4 using System.Data;
      5 using System.Drawing;
      6 using System.Linq;
      7 using System.Text;
      8 using System.Windows.Forms;
      9 
     10 namespace 帅的计算器
     11 {
     12     public partial class Form1 : Form
     13     {
     14         //类字段变量声明
     15         //类字段:第一个运算数、第二个运算数、运算结果
     16         private decimal _num1 = 0, _num2 = 0, _result = 0;
     17         //类字段:运算符号
     18         private string _operator = "";
     19         //类字段:运算符号的数量
     20         private int _operatorCount = 0;
     21         //类字段:首数字标志位
     22         private bool _firstNumberFlag = true;
     23         //类字段:进制标志位
     24         private string _NumberSystem = "dec";
     25 
     26 
     27         //类方法:把十进制转化为二进制
     28         public string DecToBin(int dec)
     29         {
     30             string bin = "";
     31             while (dec > 1)
     32             {
     33                 bin = Convert.ToChar(dec % 2 + '0') + bin;
     34                 dec = dec / 2;
     35             }
     36             bin = Convert.ToChar(dec + '0') + bin;
     37 
     38             return bin;
     39         }
     40 
     41         //类方法:把二进制转化为十进制
     42         public int BinToDec(string bin)
     43         {
     44             int dec = 0;
     45             for (int i = bin.Length; i >= 1; i--)
     46             {
     47                 dec = dec + Convert.ToInt32(bin[i - 1] - '0') * (int)(Math.Pow(2, bin.Length - i));
     48             }
     49 
     50             return dec;
     51         }
     52 
     53         //类方法:把十进制转化为八进制
     54         public string DecToOct(int dec)
     55         {
     56             string oct = "";
     57             while (dec > 7)
     58             {
     59                 oct = Convert.ToChar(dec % 8 + '0') + oct;
     60                 dec = dec / 8;
     61             }
     62             oct = Convert.ToChar(dec + '0') + oct;
     63 
     64             return oct;
     65         }
     66 
     67         //类方法:把八进制转化为十进制
     68         public int OctToDec(string oct)
     69         {
     70             int dec = 0;
     71             for (int i = oct.Length; i >= 1; i--)
     72             {
     73                 dec = dec + Convert.ToInt32(oct[i - 1] - '0') * (int)(Math.Pow(8, oct.Length - i));
     74             }
     75 
     76             return dec;
     77         }
     78 
     79         //构造方法
     80         public Form1()
     81         {
     82             InitializeComponent();
     83         }
     84 
     85         //按钮"0"的Click事件响应方法
     86         private void buttonNum0_Click(object sender, EventArgs e)
     87         {
     88             //判断是否为首数字。如果是,则替换;如果否,则追加。
     89             if (_firstNumberFlag == true)
     90             {
     91                 //编辑框文字替换为"0"
     92                 textBoxResult.Text = "0";
     93                 //首数字标志位设为false
     94                 _firstNumberFlag = false;
     95             }
     96             else
     97                 //编辑框文字中追加一个"0"
     98                 textBoxResult.Text = textBoxResult.Text + "0";
     99 
    100             //使输入焦点落到编辑框textBoxResult中
    101             textBoxResult.Focus();
    102             //让光标落在编辑框textBoxResult的最后面
    103             textBoxResult.Select(textBoxResult.Text.Length, 0);
    104         }
    105 
    106         //按钮"1"的Click事件响应方法
    107         private void buttonNum1_Click(object sender, EventArgs e)
    108         {
    109             //判断是否为首数字。如果是,则替换;如果否,则追加。
    110             if (_firstNumberFlag == true)
    111             {
    112                 //编辑框文字替换为"1"
    113                 textBoxResult.Text = "1";
    114                 //首数字标志位设为false
    115                 _firstNumberFlag = false;
    116             }
    117             else
    118                 //编辑框文字中追加一个"1"
    119                 textBoxResult.Text = textBoxResult.Text + "1";
    120 
    121             //使输入焦点落到编辑框textBoxResult中
    122             textBoxResult.Focus();
    123             //让光标落在编辑框textBoxResult的最后面
    124             textBoxResult.Select(textBoxResult.Text.Length, 0);
    125         }
    126 
    127         //按钮"2"的Click事件响应方法
    128         private void buttonNum2_Click(object sender, EventArgs e)
    129         {
    130             //判断是否为首数字。如果是,则替换;如果否,则追加。
    131             if (_firstNumberFlag == true)
    132             {
    133                 //编辑框文字替换为"2"
    134                 textBoxResult.Text = "2";
    135                 //首数字标志位设为false
    136                 _firstNumberFlag = false;
    137             }
    138             else
    139                 //编辑框文字中追加一个"2"
    140                 textBoxResult.Text = textBoxResult.Text + "2";
    141 
    142             //使输入焦点落到编辑框textBoxResult中
    143             textBoxResult.Focus();
    144             //让光标落在编辑框textBoxResult的最后面
    145             textBoxResult.Select(textBoxResult.Text.Length, 0);
    146         }
    147 
    148         //按钮"3"的Click事件响应方法
    149         private void buttonNum3_Click(object sender, EventArgs e)
    150         {
    151             //判断是否为首数字。如果是,则替换;如果否,则追加。
    152             if (_firstNumberFlag == true)
    153             {
    154                 //编辑框文字替换为"3"
    155                 textBoxResult.Text = "3";
    156                 //首数字标志位设为false
    157                 _firstNumberFlag = false;
    158             }
    159             else
    160                 //编辑框文字中追加一个"3"
    161                 textBoxResult.Text = textBoxResult.Text + "3";
    162 
    163             //使输入焦点落到编辑框textBoxResult中
    164             textBoxResult.Focus();
    165             //让光标落在编辑框textBoxResult的最后面
    166             textBoxResult.Select(textBoxResult.Text.Length, 0);
    167         }
    168 
    169         //按钮"4"的Click事件响应方法
    170         private void buttonNum4_Click(object sender, EventArgs e)
    171         {
    172             //判断是否为首数字。如果是,则替换;如果否,则追加。
    173             if (_firstNumberFlag == true)
    174             {
    175                 //编辑框文字替换为"4"
    176                 textBoxResult.Text = "4";
    177                 //首数字标志位设为false
    178                 _firstNumberFlag = false;
    179             }
    180             else
    181                 //编辑框文字中追加一个"4"
    182                 textBoxResult.Text = textBoxResult.Text + "4";
    183 
    184             //使输入焦点落到编辑框textBoxResult中
    185             textBoxResult.Focus();
    186             //让光标落在编辑框textBoxResult的最后面
    187             textBoxResult.Select(textBoxResult.Text.Length, 0);
    188         }
    189 
    190         //按钮"5"的Click事件响应方法
    191         private void buttonNum5_Click(object sender, EventArgs e)
    192         {
    193             //判断是否为首数字。如果是,则替换;如果否,则追加。
    194             if (_firstNumberFlag == true)
    195             {
    196                 //编辑框文字替换为"5"
    197                 textBoxResult.Text = "5";
    198                 //首数字标志位设为false
    199                 _firstNumberFlag = false;
    200             }
    201             else
    202                 //编辑框文字中追加一个"5"
    203                 textBoxResult.Text = textBoxResult.Text + "5";
    204 
    205             //使输入焦点落到编辑框textBoxResult中
    206             textBoxResult.Focus();
    207             //让光标落在编辑框textBoxResult的最后面
    208             textBoxResult.Select(textBoxResult.Text.Length, 0);
    209         }
    210 
    211         //按钮"6"的Click事件响应方法
    212         private void buttonNum6_Click(object sender, EventArgs e)
    213         {
    214             //判断是否为首数字。如果是,则替换;如果否,则追加。
    215             if (_firstNumberFlag == true)
    216             {
    217                 //编辑框文字替换为"6"
    218                 textBoxResult.Text = "6";
    219                 //首数字标志位设为false
    220                 _firstNumberFlag = false;
    221             }
    222             else
    223                 //编辑框文字中追加一个"6"
    224                 textBoxResult.Text = textBoxResult.Text + "6";
    225 
    226             //使输入焦点落到编辑框textBoxResult中
    227             textBoxResult.Focus();
    228             //让光标落在编辑框textBoxResult的最后面
    229             textBoxResult.Select(textBoxResult.Text.Length, 0);
    230         }
    231 
    232         //按钮"7"的Click事件响应方法
    233         private void buttonNum7_Click(object sender, EventArgs e)
    234         {
    235             //判断是否为首数字。如果是,则替换;如果否,则追加。
    236             if (_firstNumberFlag == true)
    237             {
    238                 //编辑框文字替换为"7"
    239                 textBoxResult.Text = "7";
    240                 //首数字标志位设为false
    241                 _firstNumberFlag = false;
    242             }
    243             else
    244                 //编辑框文字中追加一个"7"
    245                 textBoxResult.Text = textBoxResult.Text + "7";
    246 
    247             //使输入焦点落到编辑框textBoxResult中
    248             textBoxResult.Focus();
    249             //让光标落在编辑框textBoxResult的最后面
    250             textBoxResult.Select(textBoxResult.Text.Length, 0);
    251         }
    252 
    253         //按钮"8"的Click事件响应方法
    254         private void buttonNum8_Click(object sender, EventArgs e)
    255         {
    256             //判断是否为首数字。如果是,则替换;如果否,则追加。
    257             if (_firstNumberFlag == true)
    258             {
    259                 //编辑框文字替换为"8"
    260                 textBoxResult.Text = "8";
    261                 //首数字标志位设为false
    262                 _firstNumberFlag = false;
    263             }
    264             else
    265                 //编辑框文字中追加一个"8"
    266                 textBoxResult.Text = textBoxResult.Text + "8";
    267 
    268             //使输入焦点落到编辑框textBoxResult中
    269             textBoxResult.Focus();
    270             //让光标落在编辑框textBoxResult的最后面
    271             textBoxResult.Select(textBoxResult.Text.Length, 0);
    272         }
    273 
    274         //按钮"9"的Click事件响应方法
    275         private void buttonNum9_Click(object sender, EventArgs e)
    276         {
    277             //判断是否为首数字。如果是,则替换;如果否,则追加。
    278             if (_firstNumberFlag == true)
    279             {
    280                 //编辑框文字替换为"9"
    281                 textBoxResult.Text = "9";
    282                 //首数字标志位设为false
    283                 _firstNumberFlag = false;
    284             }
    285             else
    286                 //编辑框文字中追加一个"9"
    287                 textBoxResult.Text = textBoxResult.Text + "9";
    288 
    289             //使输入焦点落到编辑框textBoxResult中
    290             textBoxResult.Focus();
    291             //让光标落在编辑框textBoxResult的最后面
    292             textBoxResult.Select(textBoxResult.Text.Length, 0);
    293         }
    294 
    295         //按钮"."的Click事件响应方法
    296         private void buttonDot_Click(object sender, EventArgs e)
    297         {
    298             //判断是否为首数字。如果是,则替换;如果否,则追加。
    299             if (_firstNumberFlag == true)
    300             {
    301                 //编辑框文字替换为"."
    302                 textBoxResult.Text = ".";
    303                 //首数字标志位设为false
    304                 _firstNumberFlag = false;
    305             }
    306             else
    307             {
    308                 //判断现有数字中是否含有小数点
    309                 if (textBoxResult.Text.IndexOf('.') == -1)
    310                     //编辑框文字中追加一个"."
    311                     textBoxResult.Text = textBoxResult.Text + ".";
    312             }
    313 
    314             //使输入焦点落到编辑框textBoxResult中
    315             textBoxResult.Focus();
    316             //让光标落在编辑框textBoxResult的最后面
    317             textBoxResult.Select(textBoxResult.Text.Length, 0);
    318         }
    319 
    320 
    321         //按钮"+"的Click事件响应方法
    322         private void buttonAdd_Click(object sender, EventArgs e)
    323         {
    324             //首数字标志位设为true
    325             _firstNumberFlag = true;
    326 
    327             //运算符号数量加1
    328             _operatorCount = _operatorCount + 1;
    329             //判断是否为第一个运算符
    330             if (_operatorCount == 1)
    331             {
    332                 //保存第一个运算数到类字段变量_num1中(注意进制转化问题)
    333                 if (_NumberSystem == "dec")
    334                     _num1 = Convert.ToDecimal(textBoxResult.Text);
    335                 else if (_NumberSystem == "bin")
    336                     _num1 = BinToDec(textBoxResult.Text);
    337                 else if (_NumberSystem == "oct")
    338                     _num1 = OctToDec(textBoxResult.Text);
    339                 //保存运算符号到类字段变量_operator中
    340                 _operator = "+";
    341                 //清空编辑框 
    342                 textBoxResult.Text = "";
    343             }
    344             else
    345             {
    346                 //保存第二个运算数到类字段变量_num2中(注意进制转化问题)
    347                 if (_NumberSystem == "dec")
    348                     _num2 = Convert.ToDecimal(textBoxResult.Text);
    349                 else if (_NumberSystem == "bin")
    350                     _num2 = BinToDec(textBoxResult.Text);
    351                 else if (_NumberSystem == "oct")
    352                     _num2 = OctToDec(textBoxResult.Text);
    353                 //进行运算
    354                 if (_operator == "+")
    355                     _num1 = _num1 + _num2;
    356                 else if (_operator == "-")
    357                     _num1 = _num1 - _num2;
    358                 else if (_operator == "*")
    359                     _num1 = _num1 * _num2;
    360                 else if (_operator == "/")
    361                     _num1 = _num1 / _num2;
    362                 //保存运算符号到类字段变量_operator中
    363                 _operator = "+";
    364                 //在编辑框中显示前面数字的运算结果(注意进制转化问题)
    365                 if (_NumberSystem == "dec")
    366                     textBoxResult.Text = _num1.ToString();
    367                 else if (_NumberSystem == "bin")
    368                     textBoxResult.Text = DecToBin((int)_num1);
    369                 else if (_NumberSystem == "oct")
    370                     textBoxResult.Text = DecToOct((int)_num1);
    371             }
    372 
    373             //使输入焦点落到编辑框textBoxResult中
    374             textBoxResult.Focus();
    375             //让光标落在编辑框textBoxResult的最后面
    376             textBoxResult.Select(textBoxResult.Text.Length, 0);
    377         }
    378 
    379         //按钮"-"的Click事件响应方法
    380         private void buttonSubtract_Click(object sender, EventArgs e)
    381         {
    382             //首数字标志位设为true
    383             _firstNumberFlag = true;
    384 
    385             //运算符号数量加1
    386             _operatorCount = _operatorCount + 1;
    387             //判断是否为第一个运算符
    388             if (_operatorCount == 1)
    389             {
    390                 //保存第一个运算数到类字段变量_num1中(注意进制转化问题)
    391                 if (_NumberSystem == "dec")
    392                     _num1 = Convert.ToDecimal(textBoxResult.Text);
    393                 else if (_NumberSystem == "bin")
    394                     _num1 = BinToDec(textBoxResult.Text);
    395                 else if (_NumberSystem == "oct")
    396                     _num1 = OctToDec(textBoxResult.Text);
    397                 //保存运算符号到类字段变量_operator中
    398                 _operator = "-";
    399                 //清空编辑框 
    400                 textBoxResult.Text = "";
    401             }
    402             else
    403             {
    404                 //保存第二个运算数到类字段变量_num2中(注意进制转化问题)
    405                 if (_NumberSystem == "dec")
    406                     _num2 = Convert.ToDecimal(textBoxResult.Text);
    407                 else if (_NumberSystem == "bin")
    408                     _num2 = BinToDec(textBoxResult.Text);
    409                 else if (_NumberSystem == "oct")
    410                     _num2 = OctToDec(textBoxResult.Text);
    411                 //进行运算
    412                 if (_operator == "+")
    413                     _num1 = _num1 + _num2;
    414                 else if (_operator == "-")
    415                     _num1 = _num1 - _num2;
    416                 else if (_operator == "*")
    417                     _num1 = _num1 * _num2;
    418                 else if (_operator == "/")
    419                     _num1 = _num1 / _num2;
    420                 //保存运算符号到类字段变量_operator中
    421                 _operator = "-";
    422                 //在编辑框中显示前面数字的运算结果(注意进制转化问题) 
    423                 if (_NumberSystem == "dec")
    424                     textBoxResult.Text = _num1.ToString();
    425                 else if (_NumberSystem == "bin")
    426                     textBoxResult.Text = DecToBin((int)_num1);
    427                 else if (_NumberSystem == "oct")
    428                     textBoxResult.Text = DecToOct((int)_num1);
    429             }
    430 
    431             //使输入焦点落到编辑框textBoxResult中
    432             textBoxResult.Focus();
    433             //让光标落在编辑框textBoxResult的最后面
    434             textBoxResult.Select(textBoxResult.Text.Length, 0);
    435         }
    436 
    437         //按钮"*"的Click事件响应方法
    438         private void buttonMultiply_Click(object sender, EventArgs e)
    439         {
    440             //首数字标志位设为true
    441             _firstNumberFlag = true;
    442 
    443             //运算符号数量加1
    444             _operatorCount = _operatorCount + 1;
    445             //判断是否为第一个运算符
    446             if (_operatorCount == 1)
    447             {
    448                 //保存第一个运算数到类字段变量_num1中(注意进制转化问题)
    449                 if (_NumberSystem == "dec")
    450                     _num1 = Convert.ToDecimal(textBoxResult.Text);
    451                 else if (_NumberSystem == "bin")
    452                     _num1 = BinToDec(textBoxResult.Text);
    453                 else if (_NumberSystem == "oct")
    454                     _num1 = OctToDec(textBoxResult.Text);
    455                 //保存运算符号到类字段变量_operator中
    456                 _operator = "*";
    457                 //清空编辑框 
    458                 textBoxResult.Text = "";
    459             }
    460             else
    461             {
    462                 //保存第二个运算数到类字段变量_num2中(注意进制转化问题)
    463                 if (_NumberSystem == "dec")
    464                     _num2 = Convert.ToDecimal(textBoxResult.Text);
    465                 else if (_NumberSystem == "bin")
    466                     _num2 = BinToDec(textBoxResult.Text);
    467                 else if (_NumberSystem == "oct")
    468                     _num2 = OctToDec(textBoxResult.Text);
    469                 //进行运算
    470                 if (_operator == "+")
    471                     _num1 = _num1 + _num2;
    472                 else if (_operator == "-")
    473                     _num1 = _num1 - _num2;
    474                 else if (_operator == "*")
    475                     _num1 = _num1 * _num2;
    476                 else if (_operator == "/")
    477                     _num1 = _num1 / _num2;
    478                 //保存运算符号到类字段变量_operator中
    479                 _operator = "*";
    480                 //在编辑框中显示前面数字的运算结果(注意进制转化问题) 
    481                 if (_NumberSystem == "dec")
    482                     textBoxResult.Text = _num1.ToString();
    483                 else if (_NumberSystem == "bin")
    484                     textBoxResult.Text = DecToBin((int)_num1);
    485                 else if (_NumberSystem == "oct")
    486                     textBoxResult.Text = DecToOct((int)_num1);
    487             }
    488 
    489             //使输入焦点落到编辑框textBoxResult中
    490             textBoxResult.Focus();
    491             //让光标落在编辑框textBoxResult的最后面
    492             textBoxResult.Select(textBoxResult.Text.Length, 0);
    493         }
    494 
    495         //按钮"/"的Click事件响应方法
    496         private void buttonDivide_Click(object sender, EventArgs e)
    497         {
    498             //首数字标志位设为true
    499             _firstNumberFlag = true;
    500 
    501             //运算符号数量加1
    502             _operatorCount = _operatorCount + 1;
    503             //判断是否为第一个运算符
    504             if (_operatorCount == 1)
    505             {
    506                 //保存第一个运算数到类字段变量_num1中(注意进制转化问题)
    507                 if (_NumberSystem == "dec")
    508                     _num1 = Convert.ToDecimal(textBoxResult.Text);
    509                 else if (_NumberSystem == "bin")
    510                     _num1 = BinToDec(textBoxResult.Text);
    511                 else if (_NumberSystem == "oct")
    512                     _num1 = OctToDec(textBoxResult.Text);
    513                 //保存运算符号到类字段变量_operator中
    514                 _operator = "/";
    515                 //清空编辑框 
    516                 textBoxResult.Text = "";
    517             }
    518             else
    519             {
    520                 //保存第二个运算数到类字段变量_num2中(注意进制转化问题)
    521                 if (_NumberSystem == "dec")
    522                     _num2 = Convert.ToDecimal(textBoxResult.Text);
    523                 else if (_NumberSystem == "bin")
    524                     _num2 = BinToDec(textBoxResult.Text);
    525                 else if (_NumberSystem == "oct")
    526                     _num2 = OctToDec(textBoxResult.Text);
    527                 //进行运算
    528                 if (_operator == "+")
    529                     _num1 = _num1 + _num2;
    530                 else if (_operator == "-")
    531                     _num1 = _num1 - _num2;
    532                 else if (_operator == "*")
    533                     _num1 = _num1 * _num2;
    534                 else if (_operator == "/")
    535                     _num1 = _num1 / _num2;
    536                 //保存运算符号到类字段变量_operator中
    537                 _operator = "/";
    538                 //在编辑框中显示前面数字的运算结果(注意进制转化问题) 
    539                 if (_NumberSystem == "dec")
    540                     textBoxResult.Text = _num1.ToString();
    541                 else if (_NumberSystem == "bin")
    542                     textBoxResult.Text = DecToBin((int)_num1);
    543                 else if (_NumberSystem == "oct")
    544                     textBoxResult.Text = DecToOct((int)_num1);
    545             }
    546 
    547             //使输入焦点落到编辑框textBoxResult中
    548             textBoxResult.Focus();
    549             //让光标落在编辑框textBoxResult的最后面
    550             textBoxResult.Select(textBoxResult.Text.Length, 0);
    551         }
    552 
    553         //按钮"="的Click事件响应方法
    554         private void buttonEqual_Click(object sender, EventArgs e)
    555         {
    556             //保存第二个运算数到类字段变量_num2中(注意进制转化问题)
    557             if (_NumberSystem == "dec")
    558                 _num2 = Convert.ToDecimal(textBoxResult.Text);
    559             else if (_NumberSystem == "bin")
    560                 _num2 = BinToDec(textBoxResult.Text);
    561             else if (_NumberSystem == "oct")
    562                 _num2 = OctToDec(textBoxResult.Text);
    563             //进行运算
    564             if (_operator == "+")
    565                 _result = _num1 + _num2;
    566             else if (_operator == "-")
    567                 _result = _num1 - _num2;
    568             else if (_operator == "*")
    569                 _result = _num1 * _num2;
    570             else if (_operator == "/")
    571                 _result = _num1 / _num2;
    572             //在编辑框中显示运算结果(注意进制转化问题)
    573             if (_NumberSystem == "dec")
    574                 textBoxResult.Text = _result.ToString();
    575             else if (_NumberSystem == "bin")
    576                 textBoxResult.Text = DecToBin((int)_result);
    577             else if (_NumberSystem == "oct")
    578                 textBoxResult.Text = DecToOct((int)_result);
    579 
    580             //运算符号数量清零
    581             _operatorCount = 0;
    582 
    583             //使输入焦点落到编辑框textBoxResult中
    584             textBoxResult.Focus();
    585             //让光标落在编辑框textBoxResult的最后面
    586             textBoxResult.Select(textBoxResult.Text.Length, 0);
    587         }
    588 
    589         //按钮"<-"的Click事件响应方法
    590         private void buttonBackSpace_Click(object sender, EventArgs e)
    591         {
    592             //如果textBoxResult.Text不为空
    593             if (textBoxResult.Text.Length > 0)
    594                 //去除textBoxResult.Text中的最后一个字符
    595                 textBoxResult.Text = textBoxResult.Text.Substring(0, textBoxResult.Text.Length - 1);
    596 
    597             //使输入焦点落到编辑框textBoxResult中
    598             textBoxResult.Focus();
    599         }
    600 
    601         //按钮"C"的Click事件响应方法
    602         private void buttonClear_Click(object sender, EventArgs e)
    603         {
    604             //初始化有关类字段变量
    605             _num1 = 0;
    606             _num2 = 0;
    607             _result = 0;
    608             _operator = "";
    609             _operatorCount = 0;
    610             _firstNumberFlag = false;
    611             //清空编辑框
    612             textBoxResult.Text = "";
    613 
    614             //使输入焦点落到编辑框textBoxResult中
    615             textBoxResult.Focus();
    616             //让光标落在编辑框textBoxResult的最后面
    617             textBoxResult.Select(textBoxResult.Text.Length, 0);
    618         }
    619 
    620         //按钮"+/-"的Click事件响应方法
    621        
    622 
    623         //编辑框的KeyPress(键盘下压)事件的响应方法
    624         private void textBoxResult_KeyPress(object sender, KeyPressEventArgs e)
    625         {
    626             //根据用户按下的键的值,调用相应的响应方法
    627             if (e.KeyChar == '0')
    628                 buttonNum0_Click(sender, e);
    629             else if (e.KeyChar == '1')
    630                 buttonNum1_Click(sender, e);
    631             else if (e.KeyChar == '2')
    632                 buttonNum2_Click(sender, e);
    633             else if (e.KeyChar == '3')
    634                 buttonNum3_Click(sender, e);
    635             else if (e.KeyChar == '4')
    636                 buttonNum4_Click(sender, e);
    637             else if (e.KeyChar == '5')
    638                 buttonNum5_Click(sender, e);
    639             else if (e.KeyChar == '6')
    640                 buttonNum6_Click(sender, e);
    641             else if (e.KeyChar == '7')
    642                 buttonNum7_Click(sender, e);
    643             else if (e.KeyChar == '8')
    644                 buttonNum8_Click(sender, e);
    645             else if (e.KeyChar == '9')
    646                 buttonNum9_Click(sender, e);
    647 
    648             else if (e.KeyChar == '+')
    649                 buttonAdd_Click(sender, e);
    650             else if (e.KeyChar == '-')
    651                 buttonSubtract_Click(sender, e);
    652             else if (e.KeyChar == '*')
    653                 buttonMultiply_Click(sender, e);
    654             else if (e.KeyChar == '/')
    655                 buttonDivide_Click(sender, e);
    656             else if (e.KeyChar == '=')
    657                 buttonEqual_Click(sender, e);
    658 
    659             else if (e.KeyChar == 'c')
    660                 buttonClear_Click(sender, e);
    661             else if (e.KeyChar == '.')
    662                 buttonDot_Click(sender, e);
    663 
    664             else if (e.KeyChar == 8)             //或者 (e.KeyChar == '\b')   或者 (e.KeyChar == (char)Keys.Back)
    665                 buttonBackSpace_Click(sender, e);
    666 
    667             //让光标落在编辑框textBoxResult的最后面
    668             textBoxResult.Select(textBoxResult.Text.Length, 0);
    669         }
    670 
    671 
    672 
    673 
    674 
    675         private void radioButtonOctal_CheckedChanged(object sender, EventArgs e)
    676         {
    677 
    678         }
    679 
    680         private void Form1_Load(object sender, EventArgs e)
    681         {
    682 
    683         }
    684 
    685         private void radioButtonDecimal_CheckedChanged(object sender, EventArgs e)
    686         {
    687 
    688         }
    689 
    690         private void radioButtonBinary_CheckedChanged(object sender, EventArgs e)
    691         {
    692 
    693             //进行进制转换
    694             if (textBoxResult.Text != "")
    695             {
    696                 if (_NumberSystem == "dec")
    697                     textBoxResult.Text = DecToBin((int)Math.Round(Convert.ToDecimal(textBoxResult.Text)));
    698                 else if (_NumberSystem == "oct")
    699                 {
    700                     int dec = OctToDec(textBoxResult.Text);
    701                     textBoxResult.Text = DecToBin(dec);
    702                 }
    703             }
    704 
    705             //启用或禁用有关按钮
    706             buttonNum2.Enabled = false;
    707             buttonNum3.Enabled = false;
    708             buttonNum4.Enabled = false;
    709             buttonNum5.Enabled = false;
    710             buttonNum6.Enabled = false;
    711             buttonNum7.Enabled = false;
    712             buttonNum8.Enabled = false;
    713             buttonNum9.Enabled = false;
    714             buttonDot.Enabled = false;
    715 
    716             //保存进制标志
    717             _NumberSystem = "bin";
    718         }
    719 
    720         private void radioButtonDecimal_Click(object sender, EventArgs e)
    721         {
    722             //进行进制转换
    723             if (textBoxResult.Text != "")
    724             {
    725                 if (_NumberSystem == "bin")
    726                     textBoxResult.Text = BinToDec(textBoxResult.Text).ToString();
    727                 else if (_NumberSystem == "oct")
    728                     textBoxResult.Text = OctToDec(textBoxResult.Text).ToString();
    729             }
    730 
    731             //启用或禁用有关按钮
    732             buttonNum2.Enabled = true;
    733             buttonNum3.Enabled = true;
    734             buttonNum4.Enabled = true;
    735             buttonNum5.Enabled = true;
    736             buttonNum6.Enabled = true;
    737             buttonNum7.Enabled = true;
    738             buttonNum8.Enabled = true;
    739             buttonNum9.Enabled = true;
    740             buttonDot.Enabled = true;
    741 
    742             //保存进制标志
    743             _NumberSystem = "dec";
    744         }
    745 
    746         private void radioButtonOctal_Click(object sender, EventArgs e)
    747         {
    748             //进行进制转换
    749             if (textBoxResult.Text != "")
    750             {
    751                 if (_NumberSystem == "dec")
    752                     textBoxResult.Text = DecToOct((int)Math.Round(Convert.ToDecimal(textBoxResult.Text)));
    753                 else if (_NumberSystem == "bin")
    754                 {
    755                     int dec = BinToDec(textBoxResult.Text);
    756                     textBoxResult.Text = DecToOct(dec);
    757                 }
    758             }
    759 
    760             //启用或禁用有关按钮
    761             buttonNum2.Enabled = true;
    762             buttonNum3.Enabled = true;
    763             buttonNum4.Enabled = true;
    764             buttonNum5.Enabled = true;
    765             buttonNum6.Enabled = true;
    766             buttonNum7.Enabled = true;
    767             buttonNum8.Enabled = false;
    768             buttonNum9.Enabled = false;
    769             buttonDot.Enabled = false;
    770 
    771             //保存进制标志
    772             _NumberSystem = "oct";
    773         }
    774 
    775 
    776     }
    777 }
    View Code

     

    展开全文
  • 第一次写这样的windows窗体程序,为了达到操作系统里提供的计算器的功能,本计算器,大量使用了if条件语句;个人能力毕竟有限,希望大家批评指正,小弟感激不尽!!!

空空如也

1 2 3 4 5 ... 20
收藏数 1,851
精华内容 740
关键字:

c#计算器

c# 订阅