<PRE id=pre0 style="MARGIN-TOP: 0px">using System;
using System.Windows.Forms;
using System.Drawing;


//   Thanks for your help! :)
i put all my questions beside the code,which i don't understand.




public class win:Form {

        Button[] b = new Button[10];
        Button bDot,bPlus,bSub,bMul,bDiv,bEqu,bClr;
        Panel panCalc;
        TextBox txtCalc;
        
        Double dblAcc;
        Double dblSec;
        bool blnClear,blnFrstOpen;
        String strOper;
        
        public win() {
           try {
                this.Text="Calculator";
                panCalc=new Panel();
                txtCalc = new TextBox();

                txtCalc.Location = new Point(10,10);
                txtCalc.Size=new Size(150,10);
                txtCalc.ReadOnly=true;
                txtCalc.RightToLeft=RightToLeft.Yes;
                panCalc.Size=new Size(200,200);
                panCalc.BackColor=Color.Aqua;
                panCalc.Controls.Add(txtCalc);
                addButtons(panCalc);
                this.Size=new Size(200,225);
                this.Controls.Add(panCalc);
                
                dblAcc=0;
                dblSec=0;
                blnFrstOpen=true;
                blnClear=false;
                strOper=new String('=',1);
            }
            catch (Exception e) {
                Console.WriteLine("error ......  " + e.StackTrace);
            }
        }
        
        private void addButtons(Panel p) {
                for (int i=0;i<=9;i++) {
                        b[i]=new Button();
                        b[i].Text=Convert.ToString(i);
                        b[i].Size=new Size(25,25);
                        b[i].BackColor=Color.White;
                        b[i].Click+=new EventHandler(btn_clk);
                        p.Controls.Add(b[i]);   
                }
                b[0].Location=new Point(10,160);
                b[1].Location=new Point(10,120);
                b[4].Location=new Point(10,80);
                b[7].Location=new Point(10,40);
                
                b[2].Location=new Point(50,120);
                b[5].Location=new Point(50,80);
                b[8].Location=new Point(50,40);
                
                b[3].Location=new Point(90,120);
                b[6].Location=new Point(90,80);
                b[9].Location=new Point(90,40);
                
                bDot=new Button();
                bDot.Size=new Size(25,25);
                bDot.Location=new Point(50,160);
                bDot.BackColor=Color.White;
                bDot.Text=".";
                bDot.Click+=new EventHandler(btn_clk);
                
                bPlus=new Button();
                bPlus.Size=new Size(25,25);
                bPlus.Location=new Point(130,160);
                bPlus.BackColor=Color.White;
                bPlus.Text="+";
                bPlus.Click+=new EventHandler(btn_Oper);
                
                bSub=new Button();
                bSub.Size=new Size(25,25);
                bSub.Location=new Point(130,120);
                bSub.BackColor=Color.White;
                bSub.Text="-";
                bSub.Click+=new EventHandler(btn_Oper);
                
                bMul=new Button();
                bMul.Size=new Size(25,25);
                bMul.Location=new Point(130,80);
                bMul.BackColor=Color.White;
                bMul.Text="*";
                bMul.Click+=new EventHandler(btn_Oper);
                
                bDiv=new Button();
                bDiv.Size=new Size(25,25);
                bDiv.Location=new Point(130,40);
                bDiv.BackColor=Color.White;
                bDiv.Text="/";
                bDiv.Click+=new EventHandler(btn_Oper);
                
                bEqu=new Button();
                bEqu.Size=new Size(25,25);
                bEqu.Location=new Point(90,160);
                bEqu.BackColor=Color.White;
                bEqu.Text="=";
                bEqu.Click+=new EventHandler(btn_equ);
                
                bClr=new Button();
                bClr.Size=new Size(20,45);
                bClr.Location=new Point(170,40);
                bClr.BackColor=Color.Orange;
                bClr.Text="AC";
                bClr.Click+=new EventHandler(btn_clr);

                p.Controls.Add(bDot);
                p.Controls.Add(bPlus);
                p.Controls.Add(bSub);
                p.Controls.Add(bMul);
                p.Controls.Add(bDiv);
                p.Controls.Add(bEqu);
                p.Controls.Add(bClr);
        }
        
        private void btn_clk(object obj,EventArgs ea) {
                if(blnClear)
                        txtCalc.Text=""; // i try to use the    
           Visual Studio to write this program, but i don't know 
           where to put this event handler.
                
                Button b3=(Button)obj;//  another question, could u
                       explain all the meaning and purpose of the 
                       statements within this event handler.
                
                txtCalc.Text+=b3.Text;  
                
                if (txtCalc.Text==".")
                        txtCalc.Text="0.";
                dblSec=Convert.ToDouble(txtCalc.Text);
                
                blnClear=false;
        }
        
        private static void Main() {
                Application.Run(new win());
        }
        
        private void btn_Oper(object obj,EventArgs ea) {
                Button tmp=(Button)obj;
                strOper=tmp.Text;
                if (blnFrstOpen)
                        dblAcc=dblSec;
                else
                        calc();

                blnFrstOpen=false;
                blnClear=true;
        }

        private void btn_clr(object obj,EventArgs ea) {
                clear();
        }

        private void btn_equ(object obj,EventArgs ea) {
                calc();
                
        }
        
        private void calc() {       // where shoul i put this 
                                        method? thanks for your help.

                switch(strOper) {
                
                        case "+":
                                dblAcc+=dblSec;
                                break;
                        case "-":
                                dblAcc-=dblSec;
                                break;
                        case "*":
                                dblAcc*=dblSec;
                                break;
                        case "/":
                                dblAcc/=dblSec;
                                break;
                }
        
                strOper="=";
                blnFrstOpen=true;
                txtCalc.Text=Convert.ToString(dblAcc);
                dblSec=dblAcc;
        }
        
        private void clear() {
                dblAcc=0;
                dblSec=0;
                blnFrstOpen=true;
                txtCalc.Text="";
                txtCalc.Focus();

        }
}</PRE>

Reply via email to