WinForm實(shí)現(xiàn)的計(jì)算器小程序-創(chuàng)新互聯(lián)

小練習(xí):使用winform做一個(gè)小型計(jì)算器實(shí)現(xiàn)基本功能。

     思路:首先要弄清楚的是計(jì)算器的實(shí)現(xiàn)原理,當(dāng)用戶按下計(jì)算器上的鍵計(jì)算器會(huì)做相應(yīng)的操作,同時(shí)在將反饋信息顯示在一個(gè)文本框中。對(duì)應(yīng)于程序中實(shí)際上是處理用戶點(diǎn)擊某個(gè)按鈕的事件,當(dāng)用戶點(diǎn)擊了某個(gè)按鍵之后,程序會(huì)做相應(yīng)的處理。例:如果用戶點(diǎn)的是數(shù)字鍵,會(huì)直接在計(jì)算器上部的文本框中顯示出來,其他的就相應(yīng)做一個(gè)判斷,上部的文本框是結(jié)果的反饋。

站在用戶的角度思考問題,與客戶深入溝通,找到邊壩網(wǎng)站設(shè)計(jì)與邊壩網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名與空間、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋邊壩地區(qū)。

       注:在處理事件時(shí)為了減少程序代碼量,沒必要單獨(dú)為每個(gè)button處理其點(diǎn)擊事件,例如當(dāng)用戶按下1-9的數(shù)字時(shí),在計(jì)算器上部的textbox中就會(huì)顯示用戶輸入的數(shù)字,可以將這幾個(gè)button事件放在一起處理,減少代碼量,具體實(shí)現(xiàn)如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
   public partial class Form1 : Form
   {
       public Form1()
       {
           InitializeComponent();
       }

       private void Form1_Load(object sender, EventArgs e)
       {
            //處理用戶點(diǎn)擊數(shù)字鍵的事件
           button2.Click += new EventHandler(Button_Click);//將 button2.Click關(guān)聯(lián)到自定義方法Button_Click
           button3.Click += Button_Click;//將button3.Click關(guān)聯(lián)到Button_Click方法
           button4.Click += Button_Click;
           button5.Click += Button_Click;
           button6.Click += Button_Click;
           button7.Click += Button_Click;
           button8.Click += Button_Click;
           button9.Click += Button_Click;
           button10.Click += Button_Click;
           button11.Click += Button_Click;
           

           //處理用戶點(diǎn)擊運(yùn)算符的事件           

            button1.Click += Operator_Click;//將button1.Click事件關(guān)聯(lián)到Operator_Click方法
           button14.Click += Operator_Click;
           button15.Click += Operator_Click;
           button16.Click += Operator_Click;

       }
       bool mark = true;//定義一個(gè)mark用來判斷什么時(shí)候可以可以輸入運(yùn)算符,比如用戶已經(jīng)輸了一個(gè)運(yùn)算符,就不能再輸了
       ///


       ///自定義的一個(gè)方法,當(dāng)用戶點(diǎn)擊了數(shù)字鍵或運(yùn)算符時(shí)將關(guān)聯(lián)到這個(gè)方法,將當(dāng)前button的文本屬性獲取顯示在textbox中
       ///
       /// 接收關(guān)聯(lián)來的對(duì)象
       ///
       private void Button_Click(object sender, EventArgs e)
       {
           if (textBox1.Text == "0")//如果原來的文本框是0,就將按的button的文本值賦給textBox1.Text
           {
              textBox1.Text = (sender as Button).Text;
              return;//跳出整個(gè)Button_Click方法
           }

           if (!equalmark)//已經(jīng)做了結(jié)果了運(yùn)算了,這時(shí)就清空原來的文本框,等待輸入一個(gè)數(shù),否則新輸入的數(shù)就會(huì)直接拼接在結(jié)果后              //面
           {
               textBox1.Clear();//清空文本框
           }
           equalmark = true;//表示可以繼續(xù)拼接數(shù)字了

           if (!string.IsNullOrEmpty(operators) && mark)//!string.IsNullOrEmpty(operators)判斷如果operators不為空,即用戶已經(jīng)點(diǎn)擊過運(yùn)算符,并且文本框中也有值,表示用戶已經(jīng)輸入了第一個(gè)操作數(shù),并且mark為true,這是就清空文本框,然后將mark置為false可以無限制輸入而不是只能輸一位,這里的mark就是這個(gè)作用
           {
               textBox1.Clear();//清空文本框
               mark = false;//將mark置為false,表示可以繼續(xù)點(diǎn)擊運(yùn)算符
           }
          textBox1.Text += (sender as Button).Text;
       }
       ///


       /// 定義一個(gè)方法,處理如果點(diǎn)的是運(yùn)算符所需要做的操作,處理運(yùn)算符,如果用戶輸入的是運(yùn)算符,就清空文本框中
       /// 的內(nèi)容,但是在清空之前要保存原來文本框中的內(nèi)容,為后來做運(yùn)算用;同時(shí)將獲得的運(yùn)算符賦給textBox1.Text,
       /// 同樣清空,因?yàn)橛?jì)算器中運(yùn)算符是沒有顯示出來的
       ///
       ///
       ///
       string str;//定義一個(gè)string類型的變量str,獲取用戶點(diǎn)的數(shù)字
       string operators;//定義一個(gè)string類型的變量operators,獲取用戶點(diǎn)的運(yùn)算符
       private void Operator_Click(object sender, EventArgs e)
       {
           str = textBox1.Text;//獲取用戶輸入的數(shù)字賦值給str
           operators = (sender as Button).Text;
       }
       ///
       /// 用戶按了=之后觸發(fā)的事件,根據(jù)用戶輸入計(jì)算值

       ///
       /// 當(dāng)前對(duì)象
       ///
       bool equalmark = true;//定義一個(gè)bool類型的equalmark表示用戶
       private void button13_Click(object sender, EventArgs e)
       {
           switch (operators)
           {
               case "+"://如果用戶按的是+號(hào),處理加法
                   textBox1.Text =(double.Parse ( str) + double.Parse (textBox1.Text)).ToString ();//textBox1.Text原來存放的是第二次用戶輸入的數(shù)字加上原來保存的str最后賦值給textBox1.Text,作為最后的顯示,這里注意賦值不是拼接
                   break;
               case "-":
                   textBox1.Text = (double.Parse(textBox1.Text)-double.Parse(str) ).ToString();
                   break;
               case "*":
                   textBox1.Text = (double.Parse(str) * double.Parse(textBox1.Text)).ToString();
                   break;
               case "/":
                   textBox1.Text = (double.Parse(textBox1.Text)/double.Parse(str)).ToString();
                   break;
           }
           //運(yùn)算完成
           operators = "";//將保存運(yùn)算符的字段置為空
           mark = true;//mark置為true表示當(dāng)已經(jīng)點(diǎn)過運(yùn)算符之后可以繼續(xù)輸入多位數(shù)字
           equalmark = false;//equalmark用來實(shí)現(xiàn)在輸出的結(jié)果后面不能繼續(xù)累加數(shù)字的作用
       }
       ///


       /// 處理用戶按了小數(shù)點(diǎn)之后的事件
       ///
       ///
       ///
       private void button12_Click(object sender, EventArgs e)
       {
           if (!textBox1.Text.Contains('.'))
           {
               if (textBox1.Text == "")//如果原來的文本框包含.并且原來為空,就將里面的文本變?yōu)?.
               {
                   textBox1.Text += "0.";
               }
               else
               {
                   textBox1.Text += ".";//如果原來的文本框不為0,并且不包含.,就把.添加進(jìn)去
               }
           }

       }
   }
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)頁題目:WinForm實(shí)現(xiàn)的計(jì)算器小程序-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://www.muchs.cn/article12/dpgggc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、App設(shè)計(jì)、網(wǎng)站設(shè)計(jì)公司、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)