ay dUng caculator trong winform (c#)
XAY DUNG CACULATOR TRONG WINFORM(C#)
Thuc hién
Gidi thiéu
Caculator ting dung xy dung chuong trinh may tinh dién tur nhd gém cé cdc
chic nang c&n ban nhu: céng, trix, nhan, chia...
Céch thuc hién :
Néu ban nao da lap trinh Visual Basic 6 thi chac chan sé biét dugc la VB6 cé str
dung mang cdc control, cu thé Id mang cc buttons. Trong C# thi khéng c6 chic
n&ng mang cac button, nhung ta cd mét céch dé duing thay cho mang trong
VB6.
Truc hét, hay tao mét project cé tén [a Calculator.
: Ly Thanh Quyén.
Bree
g6m cae thude tinhForm’ Name frmCalculator
Text May tinh tat
Textbox Name ‘waketqua
TexAlign Right
Textbox Name ‘xtToantu
TextAlign Center
Button Name bind
Text 0
Button Name bint
Text 1
Button Name ben
Text 2
Button Name band
Text 3
Button Name band
Text 4
Button Name bins
Text 5
Button Name biné
Text 6
Button Name. btaT
Text 7
Button Name bind
Text 8
Button Name bind
Text 8
Button Name btnCham
Text
Button Name btnGong
Text +
Button Name btaTn
Text :
Button Name ‘binNhan
Text .
Button Name benChie
Text !
Button Name binBlang
Text =
Button Name. btnClear
Text cCc button sé cé mau xanh, cdc button cdn lai c6 mau dé.
Sau day ban sé viét code cho né. Ban thay, cac button cé text turong ting véi
cc s6 va toan tlr va ta str dung cac text nay dé tinh...
Luu y: Ban khéng bam double click vao cdc button dé tao su kién cho nd, ta sé
tao bang tay.
-Ban hay khai bao 3 bién toan cuc
string numi = "";
string num2 =";
string exp = "";
+num1: luu gid tri sé ther nhat
+ num2 : luu gid tri s6 thi hai
+ exp : luu todn tur
-Viét mét phuong thie dé nhan gia tri cla cac sé. Ban hay lay tén phuong tht
la NumButton_Click. Phuong thttc nay sé duc goi khi ban click vao cac button
86. Nhung lam cac nao dé tat ca cdc button s6 déu goi t6i phurong thifc nay,
ban hay code bang tay dé chi cho (mg dung biét la khi ban bam cac button sé
thi tu’ dng né sé goi téi phuong thtic nay.
-Ban hay vao phan phuting thtic khdi tao cia Calculator, va danh vao doan
code ngay sau Idi goi hamInitializeComponent () ;
public frmCalculator()
{
i
// Required for Windows Form Designer support
“wv
InitializeComponent();
this.btn1.Click += new
System. EventHandler(this.NumButton_Click) ;
this.btn2.Click += new
System. EventHandler(this.NumButton_Click) ;
this.btn3.Click += new
system. EventHandler(this.NumButton_Click) ;
this.btn4.Click += new
System. EventHandler(this.NumButton_Click) ;
this.btn5.Click += new
System. EventHandler(this.NumButton_Click) ;
this.btn6.Click += new
system. EventHandler(this.NumButton_Click) ;
this.btn7.Click += new
System. EventHandler(this.NumButton_Click) ;
this.btn8.Click += new
System. EventHandler(this.NumButton_Click) ;
this.btn9.Click += newsystem. EventHandler(this.NumButton_Click) ;
}
Bay [a cch dé goi mot phuzng thtic xir ly sur kién khi ban bam vao mét button.
Tén trong ngoac chinh la phuong thttc ma déi tugng nay sé goi tdi khi su kién
Click dugc kich hoat. Do vay, ban c6 thé thay ddi surkién bang cach thay d6i
tén sukién cia button.
Vi dy ban cé thé goi dén mét su kién khi double click theo cach sau
this.btn9.DoubleClick += new
System. EventHandler (this.NumButton_DoubleClick) ;
Luc nay, néu ban double click vao button 9 thi nd sé ty déng goi téi phuong
tht#e trong ngoac: NumButton_DoubleClick
Luu y: tén cua phuong thie c6 thé la mot tén bat ky, tuy nhién ban nén su’ dung
mét tén dang sau dau gach la tén cua su kién.
Va duéi day la néi dung cia phurong thi.
private void NumButton_Click(object sender,
System.EventArgs e)
{
Button btnClicked = (Button)sender;
string num = btnClicked.Text;
if (exp == "=")
{
numa = "";
exp = "5
}
if (exp != "")
{
num2 num;
txtKetQua.Text = num2;
}elset
num1 += num;
txtkKetQua.Text = num1;
}
+ —
-Trong céc adi sé ctla phutong thitc, sender chinh la déi tugng goi téi phuong
thite nay. Vi sender duge dé la kidu object trong khi déi tugng ta goi tdi lA
Button nén ta sé chuyén né thanh kigu button,
Button btnClicked = (Button)sender;
va ban lay gid tri cua s6 bang cach lay text cia button.
-Tiép theo ban sé kiém tra [a toan tir c6 la dau bang khong, toan tir la déu bang
khi ban via tinh toainh xong mt phép tinh, Do d6, ban sé khdi tao lai gid tri cho
bin 86 1 vé khéng (numd = 0) va toan tl bang trdng (exp="")
-Ké dén ban kiém tra xem toan tut c6 khac trong, nghia la toan tr phai la +, -1. Biéu nay déng nghia véi sé ban chon Itc nay phai la s6 thir2 va ban gan néi
tiép vao s6 thir hai trudc dé (vi ta su dung chudi) va cho hién thi ra textbox két
qua
-Cén nguigc lai cé nghia la ban chon sé dau tién va ciing lam cac thao tac tuong
tu'sé thir hai
Ban viét tiép mét phuang thitc dé xt ly khi ban click vao cac button toan tu.
Truéc hét, ban pphai viét doan code dé xtr ly su kién click cla cdc button toan
tt. Ban thém doan code sau vao tiép néi trong hamkhéi taoCalculator
this.btnCong.Click += new
system. EventHandler(this.btnExp_Click);
this.btnTru.Click += new
system. EventHandler (this. btn€xp_Click);
this.btnNhan.Click += new
system. EventHandler(this.btnExp_Click);
this.btnChia.Click += new
system. EventHandler (this. btnExp_Click);
Va dudi day la ham xir ly
private void btnExp_Click(object sender, System.EventArgs e)
{
if (exp.Equals("") || exp.Equals("="))
txtToanTu.Text = exp;
else
{
double db1ketQua = Tinh();
num = dblketQua.ToString();
num =";
txtketQua.Text = num1.ToString();
}
exp = ((Button)sender) .Text;
txtToanTu.Text = exp.ToString();
}
-Néu ton tir hién tai [a trng hay déu bang, c6 nghifa [a ban click vo button
toan tUr lan dau, thi no chi gan vao bién exp todn tir vlra chon va hién thi tén
toan tir nay ra 6 textbox toan tir cia bang tinh.
-Cén ngugc lai, néu ban click vao toan tir lan tht hai, nghia la truée dé ban di
click vao mét tan ti nao dé thi né phai tinh toan, vi du ban da c6 4+2, gid ban
bam thém toan tur - thi né phai tinh téng cla 2 sé kia cho thanh 6 réi gan no tro
lai sé thir nhat (num1), va Ic nay toan tir trd thanh toan ttr-, va ctf tiép tuc nhu’
vay.
Duéi day la ham tinh két qua:
private double Tinh()
{
double dblketqua
switch(Convert..Tochar (exp) ){
case "+":
dblketQua = Convert.ToDouble(num1) + Convert .ToDouble(num2) ;
break;
case '-':
db1ketQua = Convert .ToDouble(num1)
break;
case '*":
dblketQua = Convert .ToDouble(num1) * Convert .ToDouble(num2) ;
break;
case '/':
db1ketQua = Convert .ToDouble(num1) / Convert .ToDouble(num2) ;
break;
ti
return dblketQua;
}
Ham nay sé kiém tra toan tir exp dling switch dé biét toan tu’ nao dé tinh toan
hgp ly va tra két qua vé.
Convert . ToDouble(num2) ;
Tiép theo ban viét mét ham dé xt ly khi ban click vao button =
Truc hét, ban phai tao mét doan code dé né goi tdi phuong thc
btnBang_Click khi ban click vao button =
this.btnBang.Click += new
system. EventHandler(this.btnBang Click);
va duéi day Ia phurong thtte
private void btnBang Click(object sender, System.EventArgs
e)
{
double dblketqua =
dblketqua = Tinh();
num1 = dblketQua.ToString();
txtketQua.Text = num1;
num2 = "";
exp = "=";
txtToanTu.Text = exp;
+
Va cuéi cing la ham dé xo. Cting tuong ty trén, ban phai viét doan code xir iy
su kién
this.btnClear.Click += new
System. EventHandler(this.btnClear_Click);
Va day la phuong thie
private void btnClear_Click(object sender, System.EventArgs
e)
{
numa = "";num2 =";
exp =";
txtToanTu.Text = "";
txtketQua.Text =";
}
Ham nay chi cé nhiém vu duy nhat la reset t&t cd cdc gid tri vé trong.
Bam F5 dé chay chuong trinh.
Chutong trinh cdn cé nhiéu huge diém [a chua tinh ton dugc sé thye nhap
vao, nghia la ban chua thé lam mét biéu thie 5.5 + 5.
Hay tiép tuc phat trién thém chuong trinh nay dé cé thé nhé cc phép tinh, céc
86, Vv.
Cae ban hay thir xem.