+ Sử dụng các thuộc tính, phương thức và sự kiện của các control: Label, Textbox, Button, ErrorProvider, RadioButton, CheckBox, GroupBox, Panel.. Yêu Cầu Thiết kế form chỉ chứa 1 button
Trang 1 Tùy theo số tiết phân bổ, mỗi tuần học có thể thực hiện nhiều Module
Sinh viên phải làm tất cả các bài tập trong các Module ở tuần tương ứng Những sinh viên chưa hoàn tất phần bài tập tại lớp có trách nhiệm tự làm tiếp tục ở nhà
Các bài tập sinh viên làm kể cà ở nhà phải nộp lại cho giảng viên hướng dẫn để lấy một cột điểm vì thế phải lưu theo đúng cấu trúc của tùng bài
Trang 2Module 1 Console
Nội dung kiến thức thực hành:
+ Làm quen với ngôn ngữ C#
+ Tạo ứng dụng dạng Console
+ Chuyển đổi kiểu dữ liệu
Yêu cầu:
Tất cả các bài tập lưu trong thư mục: MaSV_HoTen\Tuan1
Tên project là Module1BaiSo_HoTenSV
Trang 3Console.Write("Nhap ten cua ban: ");
string ten = Console.ReadLine();
Xuất ra mà hình yêu cầu có dạng:
Nhap So Thu Nhat A: ??
Nhap So Thu Hai B: ??
Tong cua ?? Va ?? La: ??
Trang 4Hướng dẫn:
Hàm Main() viết code như sau:
int nSo1, nSo2, nTong=0;
Console.Clear();
Console.Write("{0}", "Nhap So thu nhat: ");
// read first number from user
nSo1 = Convert.ToInt32(Console.ReadLine());
Console.Write("Nhap So thu hai: ");
// read second number from user
nSo2 = Convert.ToInt32(Console.ReadLine());
nTong = nSo1 + nSo2;
Console.WriteLine("Tong cua " + nSo1 + " Va " + nSo2 + " La " + nTong);
Console.ReadLine();
+ Mở rộng làm các phép tính cơ bản (cộng, trừ, nhân, chia) nhưng viết theo dạng hàm
Bài 4
+ Giải và biện luận phương trình bậc 1 : ax+b=0
+ Sinh viên chú ý rằng phương trình có 3 trường hợp: vô nghiệm, vô số nghiệm và
có một nghiệm
void GiaiPTBac1( int a, float b)
xem hình để hiểu rõ yêu cầu
Trang 5Sử dụng một số hàm toán học và nhập dữ liệu từ bàn phím Kết hợp định dạng xuất
dữ liệu.( làm quen class Math)
Math.Pow(x,y) lấy xy
Math.Sqrt(x) lấy căn bậc 2 của x
Math.Round(x,2) làm tròn x tới 2 đơn vị
+ Giải và biện luận phương trình bậc 2 : ax2+bx+c=0
+ Sinh viên chú ý rằng phương trình có 5 trường hợp: vô nghiệm, vô số nghiệm và
có một nghiệm, có 2 nghiệm phân biệt, có 1 nghiệm kép
+ xem hình để hiểu rõ yêu cầu
Trang 6Bài 6
Mục đích:
Sử dụng một số hàm lượng giác và nhập dữ liệu từ bàn phím Kết hợp định dạng xuất
dữ liệu.( tiếp tục làm quen với class Math)
Math.PI lấy số PI
Math.Sin(a) tính sin, với a là radian
Math.Cos(a) tính Cos, với a là radian
Math.Tan(a) tính Tan, với a là radian
Yêu cầu:
+ Tạo Project mới với tên là CacHamLuongGiac:
+ Nhập 1 góc x Tính và xuất sinx, cosx, tgx, cotgx
+ Sinh viên chú ý rằng hàm lượng giác truyền vào là 1 số Radian, do đó các em phải đổi góc
x ra radian, công thức đổi như sau a=x*PI/180
+ Xem hình để hiểu rõ yêu cầu
Gợi ý tính hàm sin:
double fx;
Console.Write("Nhap vao 1 goc: ");
fx = Convert.ToDouble(Console.ReadLine());
double rad = fx * Math.PI / 180;
Console.WriteLine("Sin({0})={1}",fx,Math.Sin(rad));
Trang 7+ Tạo Project mới với tên là ChuViDienTichTamGiac:
+Nhập cạnh a>0, b>0, c>0 Nếu a, b, c tạo thành tam giác thì hãy tính và xuất chu vi, diện tích hình tam giác Ngược lại thông báo “Không tạo thành tam giác”
HD: cv=a+b+c, p=cv/2 và dt=√ ( ) ( ) ( )
Bài 8
Viết chương trình tính chu vi và diện tích của các hình tam giác, hình chữ nhật, hình vuông, hình tròn Chương trình cho phép nhập thông số cho 1 trong 4 hình trên và xuất kết quả ra màn hình
Yêu cầu viết hàm dang:
static void Main(string[] args)
Trang 9Module 2 GUI
Nội dung kiến thức thực hành:
+ Tạo ứng dụng trên Windows Form
+ Sử dụng các thuộc tính, phương thức và sự kiện của các control: Label, Textbox, Button, ErrorProvider, RadioButton, CheckBox, GroupBox, Panel
Yêu cầu:
Tất cả các bài tập lưu trong thư mục: MaSV_HoTen\Tuan2\
Tên project là Module2BaiSo_HoTenSV
Đổi tên form tương ứng với mục đích của bài
Bài 1
Mục đích:
Sử dụng các properties, methods và event của các đối tượng trong Windows Form
Yêu Cầu
Thiết kế form chỉ chứa 1 button (xem hình)
Khi form hiển thị, sẽ xuất ngay messageBox hiển thị lời chào như sau
Và khi người sủ dụng Click và button hay vào form củng sẽ xuất hiện các message box hiể thị các thông báo tương ứng như :
Button was clicked
Trang 10Form was clicked
Hướng Dẫn:
// sự kiện khi Button được click
private void bntClickMe_Click( object sender, EventArgs e )
{
MessageBox.Show( "Button was clicked." );
}
// sự kiện khi load form
private void frmSimpleEvent_Load(object sender, EventArgs e)
{
MessageBox.Show("Hi , Welcome to C# 2010 programming!");
}
// sự kiện khi form được Click
private void frmSimpleEvent _Click(object sender, EventArgs e)
Sử dụng các properties, methods và event của các đối tượng trong Windows Form
Thiết kế Form sau:
txtYourName txtYearOfBirth
btnExit
btnClear btnShow
errorProvider
Trang 11Yêu cầu:
Chương trình cho phép nhập tên, năm sinh vào Textbox YourName và Year of birth tương ứng Nếu YourName không nhập dữ liệu, Year of birth không phải là số thì phải thông báo lỗi (dùng ErrorProvider)
Người dùng nhấn nút Show sẽ hiển thị thông tin nhập vào MessageBox bao gồm: tên, tuổi (năm hiện tại – năm sinh)
Người dùng nhấn nút Clear sẽ xóa hết thông tin đã nhập trên các Textbox, đồng thời đặt con trỏ văn bản vào Textbox YourName
Nút Exit xác nhận người dùng có thực sự muốn thoát khỏi chương trình không? (Yes: thoát, No: không)
Nhấn phím Esc tương đương nhấn nút Exit
Hướng dẫn:
Danh sách các thuộc tính của các object:
frmBaiT
ap1
Name: frmBaiTap1 Text: My name Project
FontName: Tahoma
FontSize: 11
AcceptButton: btnShow (nhận sự kiện click
chuột khi nhấn Enter)
CancelButton: btnExit (nhận sự kiện click chuột
Leave (mất tiêu điểm)
txtYear Name: txtYear
Trang 12Lần lượt thực hiện click chọn từng phần tử trên Form theo thứ tự nhận tiêu điểm:
Trang 13Bài 3
Thiết kế giao diện như hình sau:
Viết lệnh để chương trình hoạt động như sau:
Nhấn vào Button btnHo thì gán nội dung của txtHo cho lblHoTen
Nhấn vào Button btnTen thì gán nội dung của txtTen cho lblHoTen
Nhấn vào Button btnHoTen thì gán nội dung của txtHo cộng với txtTen cho lblHoTen
Hướng dẫn: lblHoTen.Text = txtHo.Text + “ “ + txtTen.Text
Trang 14 Nhấn phím Enter tương đương nhấn Button btnHoTen
Nhấn Double click vào lblHoTen thì nội dung của lblHoTen bị xoá
Nhấn vào btnKetThuc thi đóng chương trình
Nhấn phím Esc tương đương nhấn btnKetThuc
Bài 4
Viết chương trình dùng để qui đổi tiền từ VND sang USD và ngược lại, từ VND sang EUR
và ngược lại như hình sau:
Yêu cầu:
Khi số tiền cần qui đổi không phải là số hoặc để trống thì sẽ hiển thị lỗi vào errorProvider
Nút VNDtoUSD: thực hiện qui đổi từ VND sang USD ( với tỷ giá là: 1 USD=17861
VND) và hiển thị vào lblKetQua, làm tròn 2 chữ số thập phân (dùng phương thức Math.Round)
Nút USDtoVND: thực hiện qui đổi từ USD sang VND ( với tỷ giá là: 1 USD=17861
VND) và hiển thị vào lblKetQua, làm tròn 2 chữ số thập phân (dùng phương thức Math.Round)
Nút VNDtoEUR: thực hiện qui đổi từ VND sang EUR ( với tỷ giá là: 1 USD=27043
VND) và hiển thị vào lblKetQua, làm tròn 2 chữ số thập phân (dùng phương thức Math.Round)
Nút EURtoVND: thực hiện qui đổi từ EUR sang VND ( với tỷ giá là: 1 USD=27043
VND) và hiển thị vào lblKetQua, làm tròn 2 chữ số thập phân (dùng phương thức Math.Round)
Sự kiện FormClosing: xác nhận người dùng có chắc chắn thoát không? (Yes: thoát, No: không)
Sinh viên có thể thay đổi tỷ giá bằng cách thêm TextBox nhập trên form
Trang 15Bài 5
Yêu cầu
1 khi Form load
a Radiobutton Red được chọn mặc định
b Con trỏ xuất hiện ngay tại ô Nhập tên
trong ô nhập tên)
Hướng dẫn:
viết trong sự kiện txtNhapTen_TextChanged( )
private void txtNhapTen_TextChanged(object sender, EventArgs e)
Trang 164 Nhấn Radiobutton Red, Green thì đổi màu chữ trong ô Lập trình bởi và ô nhập tên có màu tương ứng với Radiobutton phù hợp
private void raddo_CheckedChanged(object sender, EventArgs e)
{
lblLapTrinh.ForeColor = Color.Red;
txtNhapTen.ForeColor = Color.Red;
}
Lớp đại học làm thêm nhiều sự khiện radio cùng lắng nghe 1 sự khiện
private void raddo_CheckedChanged(object sender, EventArgs e)
Trang 17Viết lệnh để chương trình hoạt động như sau:
Khi form vừa load lên thì:
Con trỏ được đặt tại vị trí ô Name
Hình CDRom lớn hiện ngược lại hình nhỏ ẩn
Hướng dẫn: hiệu chỉnh property Visible của picSmall thành false (trong lúc thiết kế)
Đưa chụôt vào hình CDRom (lớn, nhỏ) hiện lên tooltip “Click Me”
Hiệu chỉnh TabIndex sao cho hợp lý (Tham khảo hình vào Menu View\Tab Order)
Nhấn vào Button Display hoặc phím Enter thì gán nội dung của ô Name và Message cho Label Message (lblMessage)
Hướng dẫn: lblMessage.Text = txtName.Text + " : " +
txtMessage.Text;
Nhấn vào Button Clear thì xóa nội dung trong ô Name và Message
Hướng dẫn:
txtMessage.Clear ();
Trang 18txtName.Clear();
Nhấn vào RadioButton (Red, Green …) thì đổi màu chữ trong ô Message thành màu tương ứng
Hướng dẫn: lblMessage.ForeColor = Color.Red;
Ần hiện Message (lblMessage) phụ thuộc vào giá trị của Check box (chkVisible)
Hướng dẫn: lblMessage.Visible = chkVisible.Checked;:
Nhấn vào Button Exit hoặc phím Esc thi đóng chương trình
Trang 19Yêu cầu:
1 Khi chương trình vừa thực thi
a Form được hiển thị giữa màn hình
b Các đối tượng được “neo” sao cho khi người dùng thay đổi kích thước form thì các đối tượng được resize kích thước sao cho “dễ nhìn”
c picTurnOn được hiển thị, picTurnOff được ẩn ngay bên dưới picTurnOn
Khi người dùng đưa chuột vào picTurnOn sẽ xuất hiện tip “Click me to
Turn OFF the Light!”, và ngược lại trên picTurnOFF
Hướng dẫn: sử dụng component ToolTip
d Hiện tên mặc định vào ô Name
e Lable ngay bên dưới pictureBox hiển thị thông báo
“Jack Turn Off the Light ,please!”
Trang 20 Khi form hiện lên thì nút Tính và nút Xóa bị mờ (Enabled=false) Nếu dữ liệu nhập không hợp lệ thì thông báo lỗi (dùng errorProvider) Sau khi nhập dữ liệu hợp lệ và đầy đủ thì nút Tính
có tác dụng (Enabled=true)
Khi nhấn nút Tính: tính nghiệm phương trình (xét tất cả các trường hợp xảy ra: PT có 1 nghiệm, vô nghiệm, vô số nghiệm) và hiện kết quả vào Nghiệm PT Khi đó nút Xóa có tác dụng, nút Tính bị mờ
Khi nhấn nút Xóa: xóa các Textbox và Label, đặt con trỏ vào Textbox A, nút Xóa bị mờ
Khi nhấn nút Thoát: xác nhận người dùng có chắc chắn thoát khỏi ứng dụng hay không?
Bài 9
Mục đích:
Sử dụng đối tượng LinkLable liên kết đến một WebSite, mở ứng dụng
Yêu cầu: Using LinkLabel Controls (page 456 )
Hướng dẫn:
public Form1()
{
InitializeComponent();
//Add a link for Calculator in the first half of LinkLabel
lnkPrograms.Links.Add(0, "Launch Calculator".Length, "calc.exe ");
//Add a link for C: Drive in
//the second half of LinkLabel
lnkPrograms.Links.Add(lnkPrograms.Text.IndexOf(
"Open C: Drive"), "Open C: Drive".Length, "c:\\");
//Autosize the control based on its contents
Trang 21System.Diagnostics.Process.Start("FireFox", "http://www.windowsforms.net");
}
private void lnkPrograms_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) {
//Launch the program stored in the hyperlink
System.Diagnostics.Process.Start(
Trang 22Hướng dẫn:
private void btnBrower_Click(object sender, EventArgs e)
{
//Set filters for graphics files
ofdPicture.Filter = "Image Files (BMP, GIF, JPEG, etc.)|" +
"*.bmp;*.gif;*.jpg;*.jpeg;*.png;*.tif;*.tiff|" + "BMP Files (*.bmp)|*.bmp|" +
"GIF Files (*.gif)|*.gif|" + "JPEG Files (*.jpg;*.jpeg)|*.jpg;*.jpeg|" +
"PNG Files (*.png)|*.png|" + "TIF Files (*.tif;*.tiff)|*.tif;*.tiff|" +
"All Files (*.*)|*.*";
if (ofdPicture.ShowDialog() == DialogResult.OK)
{
//Get file information
FileInfo file = new FileInfo(ofdPicture.FileName);
lblSize.Text = String.Format("File Size: {0} Bytes", file.Length.ToString());
lblDateModified.Text = String.Format("Date last modified: {0}",
file.LastWriteTime.ToLongDateString());
lblDateAccessed.Text = String.Format("Date last accessed: {0}",
file.LastAccessTime.ToLongDateString());
//Load the file contents in the PictureBox
this.pbImage.Image = new Bitmap(ofdPicture.FileName);
}
}
Trang 23Bài 11
Viết chương trình định dạng Textbox theo các font chữ tương ứng với từng Radiobutton
Trang 24Module 3 GUI
Nội dung kiến thức thực hành:
+ Sử dụng các thuộc tính, phương thức và sự kiện của các control: PictureBox,
ListBox, CheckedListBox, ComboBox
Yêu cầu:
Tất cả các bài tập lưu trong thư mục: MaSV_HoTen\Tuan3\
Tên project là Module3BaiSo_HoTenSV
Đổi tên form tương ứng với mục đích của bài
Bài 1
Hãy tạo một Project dùng để quản lý giờ thuê máy của một phòng máy có giao diện và yêu cầunhư sau:
Yêu Cầu:
o Khi form vừa load lên màn hình thì
các CheckBox Bắt đầu có Enabled=True
các CheckBox Kết thúc có Enabled=False
Các Label có Caption= rổng
o Khi người sử dụng Click vào ChechBox Bắt Đầu của
một máy và nếu thuộc tính value của nó =1 thì:
Hiện Giờ hiện tại lên Label bắt đầu của máy tương ứng
Cho thuộc tính Enabled của CheckBox Bắt đằu =False
Cho thuộc tính Enabled của CheckBox Kết thúc =True
o Khi người sử dụng Click vào ChechBox Kết thúc của một máy và nếu thuộc tính
value của nó =1 thì:
Hiện Giờ hiện tại lên Label Kết thúc của máy tương ứng
Dựa vào Giờ và Phút (không cần quan tâm đến số giây) trên các label Bắt đầu
và Kết thúc tính ra số tiến phải trả, rồi dùng Msgbox để
thông báo cho người sử dụng như hình bên (tiền thuê
máy là 3000đ/giờ)
Xóa nội dung trong các Label Bắt đầu và Kết thúc
Cho thuộc tính Enabled của CheckBox Bắt đằu =True
Cho thuộc tính Enabled của CheckBox Kết thúc =False
Cho thuộc tính Value của CheckBox Bắt đằu =0
Cho thuộc tính Value của CheckBox Kết thúc =0
Trang 25Khi người sử dụng Click vào nút Dừng chương trình thì kiểm tra nếu có máy đang
thuê phải nhắc nhở người sử dụng bằng MsgBox, khi nào người sử dụng thật sự muốn kết thúc thì mới dừng chương trình
Hướng Dẫn:
//Các bạn thực hiện các dòng lệnh sau:
chkKetThuc1.Enabled = false;
chkKetThuc2.Enabled = false;
//Lưu ý các bạn có thể thay đổi thuộc tính CheckBox giống Button:
Properties (checkbox)-> Appearance đổi thành Button:
//Xây Dựng Hàm cho CheckBox và thuộc tính Enable cho CheckBox Bắt Đầu:
if (chkBatDau1.Checked == true)
{
lblBatDau1.Text = DateTime.Now.ToLongTimeString();//hien thi gio he thong
// Thay đổi thuộc tính Enable cho CheckBox:
lblKetThuc1.Text = DateTime.Now.ToLongTimeString();
DateTime batDau = Convert.ToDateTime(lblBatDau1.Text);//khai bao bien
DateTime ketThuc = Convert.ToDateTime(lblKetThuc1.Text);
TimeSpan soGioThue = ketThuc - batDau;//tinh thoi gian thue may
double dbGio = soGioThue.TotalHours;//chuyen so gio thue sang kieu so
double dbTien = dbGio * 3000L;//tinh tien
MessageBox.Show("Số giờ thuê là: " + dbGio + " h" + "\n" + "Số tiền phải trả: "
+ dbTien + " VND","Thông báo máy 1!");//xuat thong bao
//Xóa label
lblBatDau1.Text = "";//xóa thong tin o 2 label
lblKetThuc1.Text = "";
chkKetThuc1.Enabled = false;//quy dinh viec hien thi
chkBatDau1.Checked = false;//cac radio
chkBatDau1.Enabled = true;
Trang 26chkKetThuc1.Checked = false;
// Hỏi dừng chương trình sử dụng MsgBox :
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult dl;
dl = MessageBox.Show("Có chắc bạn muốn đóng ứng dụng?", "Thông báo!",
MessageBoxButtons.YesNo, MessageBoxIcon.Question,
MessageBoxDefaultButton.Button1);
if (dl == DialogResult.No)
e.Cancel = true;
}
Lưu ý các bạn sử dụng event của Form (Formclosing)
// thêm hỏi tắt chương trình (khi có 1 máy đang hoạt động)
private void btnExit_Click(object sender, EventArgs e)
{
if (chkBatDau1.Checked == true || chkBatDau2.Checked == true)// nếu có thì làm
MessageBox.Show("Có 1 máy trong hệ thống vẫn chưa tính tiền, bạn hãy xem lại!",
"Warming!",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
Else // ko thì làm trong else
Cách 1 lấy trong resource
private void rdb_CheckedChanged(object sender, EventArgs e)
{
Trang 27RadioButton r = (RadioButton)sender;
Cách 2 lấy trong tập imageList
private void radButton_CheckedChanged(object sender, EventArgs e)
Trang 28 Người dùng nhấn vào nút nào thì thực hiện chức năng tương ứng của nút đó Hiện kết quả
ra Messagebox (nếu có)
Thiết lập thuộc tính Anchor hợp lý cho các control
Thiết lập MinimumSize cho form
Trang 29Bài 5
Thiết kế form và thực hiện các chức năng sau
Quy định form hiễn thị giữa màn hình Không cho người sử dụng thay đổi kích thước form
(StartPosition/CenterScreen)
Quy định việc di chuyển Tab hợp lý (menu View/Tab Order)
Các ListBox được phép chọn nhiều mục (kết hợp giữa phím Shift, Control và chuột)
(SelectionMode/MultiExtended)
Trang 30Khi người sử dụng Click nút “Cập nhật” hoặc nhấn phím Enter (AcceptButton) thì mặt định nhập tên sinh viên từ textbox vào danh sách lớp A (không chấp nhận dữ liệu rỗng) Theo đó người sử dụng có thể chọn lớp để cập nhật từ combobox lớp
Các nút “>” và “<” khi được Click sẽ di chuyển tất cả các mục đang chọn sang ListBox bên kia
tương ứng
Các nút “>>” và “<<” khi được Click sẽ di chuyển toàn các mục sang Listbox bên kia tương ứng
Nút lệnh “Xóa lớp A”, “Xóa lớp B” cho phép xóa các mục đang chọn trong list hiện hành
Hướng dẫn:
Thiết lập cho button cập nhật, nếu user nhập dữ liệu rỗng, xuất MessageBox báo lỗi, nếu
ko thì truyền dữ liễu vào ListBox
//truyền dữ liệu vào list box
string strDuLieu = txtTen.Text;
Tạo 1 hàm thực thi việc chuyển dữ liệu trong đó:
Dùng vòng lặp white() duyệt từ đầu đến cuối List Box
Nếu có phần tử nào được chọn thì xóa phần tử đó ở List Box A và thêm nó vào List Box
// copy selected strings in the source list to the destination list
for (int i = 0; i < SourceListbox.SelectedItems.Count; i++)
{
Trang 31Trong sự kiện Click của button “>”, nếu danh sách ko rỗng, thì hỏi xem user có thật sự
muốn chuyển dữ liệu hay ko Nếu Yes thì gọi lại hàm chuyển dữ liệu Nếu ds rỗng, xuất hiện thông báo lỗi
MessageBox.Show("Danh sách hiện đang rỗng!", "Chú ý");
Làm tương tự với button “<”
Thiết lập button “>>”:
Tạo 1 hàm để chuyển dữ liệu từ lớp A sang lớp B
Cho vòng lặp white() chạy cho đến khi ko còn phần tử nào trong List Box Lop A
Mỗi lần lặp, ta chuyển phần tử đầu tiên của LopA sang LopB
Đồng thời xóa phần tử đầu tiên đó ở LopA
void chuyenToanBo(ListBox lst1, ListBox lst2)
Trong sự kiện click của button “>>”, ta kiểm tra xem danh sách LopA có rỗng hay ko,
nếu ko thì hỏi xem user thật sự muốn chuyển hay hay Nếu Yes, gọi hàm
chuyenToanBo
Nếu ds LopA rỗng, hiện bảng thong báo lỗi
DialogResult hoiChuyen;
Trang 32MessageBox.Show("Danh sách hiện đang rỗng!", "Chú ý");
Làm tương tự với button “<<”
Thiết lập button “Xóa Lớp A”
Ta phải dùng hàm white() để lặp từ đầu đến cuối danh sách, nếu phần tử được chọn thì xóa (khi đó phần tử phía sau sẽ dồn lên chỗ phần tử vừa xóa), ko được chọn thì cộng tiếp lên
void xoaDuLieu(ListBox lst)
Trong sự kiện click của button xóa lớp A, gõ vào đoạn code bên dưới Nếu danh sách có
>=1 phần tử, ta xuất hiện bảng hỏi xóa Nếu user đồng ý, gọi lại hàm xoaDuLieu ở trên Nếu danh sách rỗng, hiện bảng thong báo lỗi
DialogResult hoiXoa;
if (lstDanhSach.Items.Count > 0)
{
hoiXoa = MessageBox.Show("Bạn có chắc xóa những phần tử này?", "Chú ý",
MessageBoxButtons.YesNo, MessageBoxIcon.Question,
MessageBox.Show("Hiện danh sách đang rỗng!", "Chú ý");
Thiết lập button Kết thúc và sự kiện FormClosing như nhưng bài trước
Bài 6
Viết chương trình cho phép sinh viên đăng ký học các môn học trong học kỳ:
Trang 33Yêu cầu:
Khi Form hiện lên, các ô nhập đều để trống (thiết lập tab hợp lý)
Nút Đăng ký: Hiển thị các thông tin mà sinh viên đã đăng ký lên Messagebox như hình:
string CacMonHocDangChon(CheckedListBox lst)
Trang 34 Nút Hủy: trả lại trạng thái ban đầu của Form
void HuyCheckListBox(CheckedListBox lst)
Chương trinh quay số may mắn
Thiết kế giao diện như hình trên
Groupbox chứa 3 labe
2 Label dùng để hiễn thị kết quả (canh lề pải)
Mỗi lần quay số, người chơi phải trả trước 30 đồng, tương ứng là máy sẽ được cộng thêm
30 đồng Và nếu người chơi có số tiền ít hơn 30 đồng thì sẽ không được phép chơi tiếp
Nếu mỗi lần quay được số 7, người chơi sẽ được thưởng như sau
Nếu ô đầu tiên là số 7 (random từ 0 đến 8), được thưởng 100 đồng + 50% số tiền của máy
Nếu ô số 2 là số 7(random từ 0 đến 9), người chơi được thưởng 30 đồng + 50% tiền của máy Nếu ô số 3 là số 7(random từ 0 đến 10), người chơi được thưởng 10 đồng;
(số tiền người chơi sẽ được cộng dồn nếu cả 3 ô cùng là số 7, tiền máy sẽ giảm đi phần trăm tương ứng)
Trang 35//Xử lý trên sự kiện của timer
private void timer1_Tick(object sender, EventArgs e)
timer1.Interval += 5;//tăng giá trị của timer
//tạo số ngẫu nhiên
Random ran = new Random();
//kiểm tra số ngẫu nhiên vừa tạo ra có phải lá số 7 hay không
if (timer1.Interval > 200) // điều kiện dừng của timer
tiennguoi = tiennguoi + tienthuong;
tienmay = tienmay - (tienmay * 50) / 100;
//xuất thông báo
MessageBox.Show("Bạn được thưởng " + tienthuong + " đồng", "Lucky Seven!");
}
if (so2 == 7)
{
dTienThuong = 30 + (dTienMay * 50) / 100; //tính tiền thưởng
dTienNguoi += dTienThuong; //tính tiền người chơi nhận được
dTienMay -= (dTienMay * 50) / 100;
//tính tiền máy
Trang 36MessageBox.Show("Bạn được thưởng " + dTienThuong + " đồng!", "Lucky
dTienThuong = 100 + (dTienMay * 50) / 100; //tính tiền thưởng
dTienNguoi += dTienThuong; //tính tiền người chơi nhận được
dTienMay -= (dTienMay * 50) / 100; //tính tiền máy
MessageBox Show( "Bạn được thưởng " + dTienThuong + " đồng!" , "Lucky Seven!" );
}
lblTienNguoiChoi.Text = dTienNguoi.ToString();//hiễn thị kết quả tiền người
lblTienMay.Text = dTienMay.ToString(); //hiễn thị kết quả tiền máy
timer1.Enabled = true; //kích hoạt timer
timer1.Interval = 2; //quy định thời gian tái kích hót timer
tienmay = tienmay + 30; //tăng tiền của MÁY
tiennguoi = tiennguoi - 30; //giảm tiền người chơi
lblTienNguoiChoi.Text = dTienNguoi.ToString();
//hiễn thị kết quả ra màn hình
}
Else
//không còn đủ tiền: over Game ,hiển thị Thông báo không thể chơi tiếp do không đủ tiền
MessageBox.Show("Bạn không đủ tiền để tiếp tục trò chơi! Chúc may mắn lần sau!", "Thông Báo",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
timer1.Enabled = false; // Khóa timer
btnQuaySo.Enabled = false; // khóa nút quay số
Trang 38Module 4 GUI
Nội dung kiến thức thực hành:
+ Sử dụng các thuộc tính, phương thức và sự kiện của các control: TrackBar,
NumericUpDown, MaskEditBox, DateTimePicker, MonthCalendar, Timer, ProgressBar, ToolTip, MenuStrip
+ Viết ứng dụng dạng MDI
Yêu cầu:
Tất cả các bài tập lưu trong thư mục: MaSV_HoTen\Tuan4\
Tên project là Module4BaiSo_HoTenSV
Đổi tên form tương ứng với mục đích của bài
Bài 1
Thiết kế giao diện cho phép đổi màu Panel như sau:
Để đổi màu Panel, người dùng có thể kéo các TrackBar để thay đổi các giá trị màu red(R), green(G) và blue(B) Yêu cầu khi TrackBar nào kéo đến đâu thì giá trị của nó phải được hiện ra tương ứng trên các Label Các TrackBar có giá trị trong khoảng 0 đến 255
Hướng dẫn:
void ProgramInit()
{
int nRed = trkRed.Value;
int nGreen = trkGreen.Value;
int nBlue = trkBlue.Value;
Xây dựng chương trình hiển thị lịch tờ với yêu cầu sau:
Khi mới mở Form sẽ hiển thị lịch theo ngày hiện hành Khi thay đổi ngày, tháng, năm trên Form (nhớ kiểm tra ngày hợp lệ) sau đó click nút Xem Lịch thì sẽ hiển thị đúng ngày tháng năm
đó vào Groupbox bên phải (bao gồm cả thứ trong tuần)