1. Lương Trần Hy Hiến 1/29
BÀI TẬP THỰC HÀNH LẬP TRÌNH WINDOWS – C#
1 Phần 1: Làm quen với ứng dụng Form
1.1 Bài tập mở đầu
1.1.1 Khởi tạo Project
Từ Visual Studio 2005/2008/2010 ta chọn File New Project.
Một hộp thoại xuất hiện, ta chọn Template là Windows Form Application.
Ứng dụng được tạo ra như sau:
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM TP.HCM
KHOA CÔNG NGHỆ THÔNG TIN
http://www.hcmup.edu.vn
2. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 2/29
1.1.2 Ứng dụng mở đầu:
Project BaiTap01 gồm có thành phần Program.cs giống trong ứng dụng Console Application và còn
có một thành phần mới là Form1.cs đang ở chế độ Design với giao diện như sau:
Chú ý cửa sổ Toolbox chứa các công cụ để thiết kế:
Nếu không thấy cửa sổ này, ta chọn menu View Toolbox.
3. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 3/29
1.1.3 Đổi tên form:
Click lên Form1 ở cửa sổ Design, quan sát trên cửa sổ Properties, ta thấy có thuộc tính Text, giá trị
mặc định là Form1, ta đổi thành BaiTap01.
Ta thấy thanh tiêu đề Form1 đổi sang BaiTap01.
1.1.4 Kéo thả các control từ Toolbox vào Form
Từ thanh Toolbox, kéo thả một Label bỏ vào Form, sau đó di chuyển chuột đến cửa sổ Properties,
chọn thuộc tính Text, đổi từ label1 sang Nhập n.
4. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 4/29
Tiếp theo kéo thả một Textbox bỏ vào form.
5. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 5/29
Trong cửa sổ Properties của textbox này, thuộc tính Name ta đổi từ textBox1 thành txtN.
Tương tự thêm vào form một label có thuộc tính Text đổi thành Tổng và một textbox có thuộc tính
Name đổi thành txtTong.
Tiếp theo, kéo một Button từ Toolbox và thả vào Form, đổi thuộc tính Name của button này là
btnTinh, text là Tính.
Kéo thả thêm một Button nữa tương tự trên, Name = btnThoat, Text = Thoát.
Đưa chuột về các góc của Form để thay đổi kích thước cửa sổ.
6. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 6/29
1.1.5 Xử lý sự kiện click chuột lên button
Double click vào button Tính (btnTinh), một cửa sổ soạn thảo xuất hiện với nội dung như sau:
Chú ý: Cửa sổ này là Form1.cs tương ứng với Form1.cs[Design].
Phương thức btnTinh_Click được phát sinh do ta vừa double click vào btnTinh.
Ta định nghĩa cho lớp này như sau:
7. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 7/29
Tiếp theo ta xử lý sự kiện click chuột cho button btnThoat.
Quay lại Form1.cs[Design], double click lên button Thoát, Form1.cs có nội dung thay đổi như sau:
Ta xử lý cho sự kiện này như sau:
private void btnThoat_Click(object sender, EventArgs e)
{
Close();
}
Chạy thử chương trình (F5):
8. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 8/29
Nhập n = 4 và click vào button Tính. Kết quả xuất hiện ở txtTong:
Click vào button Thoát để kết nối chương trình.
1.2 Viết chương trình nhập vào 2 số a và b, cho biết số lớn nhất và nhỏ nhất trong 2 số a,b
với giao diện như sau
Hướng dẫn gợi ý: sử dụng cấu trúc If …Else
Mở rộng cho 3 số:
1.3 Nhập vào một số nguyên từ 0 đến 9, hiển thị bằng “chữ” các ký số trên, ví dụ:
- Nhập 1 “Một”
- Nhập 2 “Hai”
- Nhập 3 “Ba”
- ..
- Nhập 9 “Chín”
9. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 9/29
Hướng dẫn gợi ý: sử dụng cấu trúc switch … case
1.4 Nhập vào một số nguyên dương N, hiển thị bằng “chữ” số vừa nhập trên, ví dụ:
- Nhập 1 “Một”
- Nhập 12 “Mười hai”
- Nhập 123 “Một trăm hai mươi ba”
Hướng dẫn gợi ý: sử dụng cấu trúc switch … case
1.5 Viết chương trình nhập vào giá trị nguyên dương N, tính tổng
S = 1 + 2 + 3 +…+ N
với giao diện như sau:
Hướng dẫn gợi ý: sử dụng vòng lặp While, For
10. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 10/29
1.6 Viết chương trình nhập vào giá trị nguyên dương N, tính tổng
S = 1 + 2 + 3 +…+ N
với giao diện như sau
Tương tự tính tổng
- S = 1 + 3 + 5 + 7 +…+ (2N +1)
- S = 2 + 4 + 6 + 8 +…+ 2N.
1.7 Viết chương trình gồm 1 form trong đó có 1 button và 1 label hiển thị số lần nhấn
button đó.
1.8 Viết chương trình nhập vào giá trị nguyên dương N, và số thực X, tính tổng:
S = X + X2 + X3 + X4 +..+ XN
Tương tự tính tổng
- S = X + X3
+ X5
+ X5
+..+ X2N+1
- S = X2
+ X4
+ X6
+..+ X2N
11. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 11/29
1.9 Thiết kế giao diện và cài đặt chương trình như sau:
1.10 (BT có hướng dẫn) Máy tính đơn giản thực hiện các chức năng +, -, *, /.
MÁY TÍNH ĐƠN GIẢN1
Bước 1: Tạo Project, ghi tiêu đề form, icon form, ẩn nút Minimize, Maximize
1
Xử lý cho nút X: Sự kiện FormClosing()
12. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 12/29
Bước 2: Thiết kế màn hình và đặt tên như hình sau:
Trong đó các phím số đặt tên từ btn0 btn9.
Bước 3: Khai báo các biến cần thiết
• string chuoitam = ""; //Dùng để lưu giữ tạm giá trị của số nhập vào
• char toantu; //Dùng lưu kí hiệu toán tử của phép toán, vd: +, -, *, /
• double[] toanhang = new double[2];//Lưu 2 toán hạng (số hạng) của phép toán
• double ketqua; //Dùng lưu kết quả của phép toán
• int buoc = 1; //Dùng lưu giữ số bước thực hiện phép toán
//Khai báo biến
string chuoitam = "";
char toantu;
double[] toanhang = new double[2];
double ketqua;
int buoc = 1;
Bước 4: Viết hàm cho chung cho các phím số (0 9)
Đặt tên cho phím vừa bấm là b. Nếu b rỗng, kết thúc hàm. Ngoài ra chúng ta cũng loại trừ trường hợp
có rất nhiều số 0 đứng trước một số khác (ví dụ 000000001 chính là 1). Do đó b.Text == “0” &&
chuoitam.Length == 0 thì kết thúc hàm.
//Hàm bấm phím số
private void NumberButtons(object sender, EventArgs e)
{
Button b = sender as Button;
if ((b == null) || (b.Text == "0" && chuoitam.Length == 0)) return;
chuoitam += b.Text;
txtManHinh.Text = chuoitam;
}
Lưu ý: Cho tất cả các phím số gọi hàm này ứng với sự kiện click.
13. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 13/29
Bước 5: Viết hàm xử lý cho nút +/- (dương/âm)
//Hàm xử lý cho nút +/- (dương/âm)
private void btnCongTru_Click(object sender, EventArgs e)
{
if (chuoitam.Contains('-'))
chuoitam = chuoitam.Replace("-", "");
else
chuoitam = "-" + chuoitam;
txtManHinh.Text = chuoitam;
}
Bước 6: Viết hàm xử lý cho phím .
//Hàm xử lý phím chấm
private void btnCham_Click(object sender, EventArgs e)
{
if (!chuoitam.Contains('.'))
{
chuoitam = chuoitam + ".";
txtManHinh.Text = chuoitam;
}
}
Bước 7: Viết hàm xử lý cho nút C
//Hàm xử lý nút C
private void btnC_Click(object sender, EventArgs e)
{
if (chuoitam.Length == 0)
{
buoc = 1;
toanhang[0] = toanhang[1] = 0.0;
toantu = ' ';
ketqua = 0.0;
}
else
chuoitam = "0";
txtManHinh.Text = chuoitam;
}
Bước 8: Viết hàm xử lý cho phím bằng2
2
Sinh viên tự hoàn chỉnh thêm cho trường hợp bấm nhiều dấu = liên tiếp.
//Hàm bấm phím số
private void btnBang_Click(object sender, EventArgs e)
{
if (chuoitam.Length != 0)
toanhang[1] = Double.Parse(chuoitam);
switch (toantu)
{
case '+': ketqua = toanhang[0] + toanhang[1]; break;
case '-': ketqua = toanhang[0] - toanhang[1]; break;
case '*': ketqua = toanhang[0] * toanhang[1]; break;
case '/': ketqua = toanhang[0] / toanhang[1]; break;
}
txtManHinh.Text = ketqua.ToString();
//Gán lại giá trị ban đầu
buoc = 1;
chuoitam = "";
}
14. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 14/29
Bước 9: Viết hàm xử lý các phím thực hiện phép toán3
1.11 Chương trình máy tính của Windows 7.
Thiết kế máy tính bỏ túi có các chức năng như hình bên.
Không cần thiết kế menu.
3
Sinh viên tự hoàn chỉnh thêm cho trường hợp bấm nhiều lần 1 toán tử.
//Hàm bấm phím số
private void Operations(object sender, EventArgs e)
{
Button b = sender as Button;
if(buoc == 1)
toantu = b.Text[0];//Lấy kí hiệu toán tử
if (chuoitam.Length == 0)
toanhang[buoc - 1] = ketqua;
else
toanhang[buoc - 1] = Double.Parse(chuoitam);
if (buoc == 2)
{
btnBang_Click(null, null);
toantu = b.Text[0];
toanhang[0] = ketqua;
buoc = 2;
}
else
{
txtManHinh.Text = toanhang[0].ToString();
buoc++;
}
chuoitam = "";
}
15. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 15/29
1.12 Viết chương trình tính tiền dịch vụ nha khoa với yêu cầu sau:
1. Khi chạy chương trình (F5) sẽ xuất hiện màn hình như trên, trong đó cấm thao tác trên tất cà các
đối tượng trừ đối tượng textbox lưu trữ tên khách hàng và nút thoát.
2. Nếu người dùng nhập tên khách hàng thì mới cho phép thao tác trên các control khác (trừ textbox
tổng cộng).
3. Nhấn vào nút “Tính tiền”, thực hiện tính tổng tiền theo lựa chọn của khách hàng và hiển thị thông
báo dạng “Khách hàng: XYZ cần trả số tiền ABC” với XYZ là tên nhập vào, ABC là số tiền cần
trả.
4. Nhấn vào nút “Xóa”: đưa màn hình trở lại trạng thái lúc khởi tạo.
5. Nhấn vào nút “Thoát”: Xuất hiện thông báo “Bạn muốn có đóng chương trình không?”
o Nếu người dùng chọn Yes, đóng chương trình.
o Nếu người dùng chọn No, trở lại chức năng trước đó.
1.13 Danh sách tên
1.1.6 Tạo Form theo mẫu:
16. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 16/29
1.1.7 Các thuộc tính:
1.1.7.1 Không cho phép resize form:
Property New Value
FormBorderStyle FixedSingle
Size 370, 225
Text Add Names
1.1.7.2 Các Control:
Control Type Property New Value
Button Name closeButton
Location 273, 16
Text Close
Button Name addButton
Location 16, 16
Text Add
Label Text Title
Label Text First Name
Location 132, 56
Label Text Last Name
Location 248, 56
TextBox Name firstTextBox
Location 132, 80
Text (blank)
TextBox Name lastTextBox
Location 248, 80
Text (blank)
ComboBox Name titleComboBox
Items Mr.;Mrs.;Ms.;Miss.;Dr.
Location 16, 80
MaxDropDownItems 4
Size 100,21
Text (blank)
ListBox Name namesListBox
Location 16, 112
Size 336, 69
1.1.8 Các sự kiện:
1.1.8.1 Sự kiện cho nút Close:
private void closeButton_Click(object sender, EventArgs e)
{
this.Close();//thêm code này
}
1.1.8.2 Sự kiện cho nút Add:
private void addButton_Click(object sender, EventArgs e)
{
//add the following code
string first = firstTextBox.Text;
string title = titleComboBox.Text;
string last = lastTextBox.Text;
string nameToAdd = title + " " + first + " " + last;
namesListBox.Items.Add(nameToAdd);
}
17. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 17/29
1.1.9 Kết quả chương trình:
Ghi chú: Bài tập này sinh viên tự thực hiện
1.14 Xây dựng chương trình ứng dụng: Danh mục món ăn
1.15 Tạo ứng dụng WinForm
Thiết kế giao diện như hình sau:
• Đặt lại thuộc tính và tên cho form.
• Đặt lại thuộc tính và tên cho các control trên form.
1.16 Đăng ký và xử lý sự kiện Button “Thêm”
- Thêm một item mới vào List_Thucdon:
List_Thucdon.Items.Add(txt_Mon.Text);
ListBox
List_Thucdo
n
List_Chon
18. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 18/29
- Sau khi thêm xong thì clear txt_Mon
txt_Mon.Text = "";
1.17 Đăng ký và xử lý sự kiện cho Button
- Thêm một item được chọn trong List_Thucdon vào List_Chon
List_Chon.Items.Add(List_Thucdon.SelectedItem);
- Tuy nhiên, sẽ xảy ra trường hợp một item được add nhiều lần. Vì vậy, phải kiểm
tra xem trong List_Chon đã tồn tại item đó hay chưa?
1.18 Tương tự, đăng ký và xử lý sự kiện cho Button
o Sử dụng vòng lặp để duyệt tất cả các item trong ListBox
o ???
1.19 Đăng ký và xử lý sự kiện cho Button
- Xóa một item ra khỏi ListBox
List_Chon.Items.Remove(List_Chon.SelectedItem);
hoặc:
List_Chon.Items.RemoveAt(List_Chon.SelectedIndex);
- Xóa tất cả các item trong ListBox
List_Chon.Items.Clear();
1.20 Sercurity Panel
Xây dựng ứng dụng theo yêu cầu sau:
Một phòng lab muốn thiết lập một Sercurity Panel đặt bên ngoài cửa. Chỉ cho phép
những các cá nhân có trách nhiệm mới được vào và mỗi lần đăng nhập họ phải nhập các
sercurity code được cung cấp. Những sercurity code (hay còn gọi là access code) sau
được xem là hợp lệ và cung cấp cho các nhóm nhân viên như bảng sau:
Value Group
6990, 6999 Technicians
0100 Custodians
9998, 1006 – 1008 Scientist
Một khi nhập access code thì sẽ có hai trạng thái: granted hoặc denied. Tất cả thông
tin truy cập sẽ được hiển thị trong một khung thông tin bên dưới keypad. Nếu access là
granted thì ngày, thời gian, group (technician, custodian, scientist) sẽ được hiển thị ở khung
thông tin. Trường hợp access là denied thì ngày, giờ và thông tin “Access denied” sẽ hiển
thị ở khung bên dưới. Ngoài ra user nếu chỉ nhấn một con số sercurity code thì sẽ hiển thị
ra thông báo là ngày, giờ và “Restricted Access”.
19. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 19/29
2 Phần 2: Làm quen với các control Toolbar, Menu
2.1 Chương trình đăng nhập
Viết chương trình thể hiện màn hình “Đăng nhập” (login) chương trình như sau
- Khi nhấn vào nút “Đăng nhập”, thực hiện kiểm tra
o Nếu tên người dùng = “DHSP” và mật khẩu = “tinhoc” thì hiển thị
thông báo (MessageBox) “Đăng nhập thành công
o Ngược lại: thông báo “Không đúng tên người dùng/mật khẩu”
- Khi nhấn vào nút “Thoát” Kết thúc chương trình
- Mở rộng Khi nhấn vào nút “Đăng nhập”, thực hiện kiểm tra
o Nếu tên người dùng = “DHSP” và mật khẩu = “tinhoc” thì
Ẩn màn hình “Đăng nhập”
Hiển thị màn hình chính với hình thức thể hiện như sau
o Ngược lại: thông báo “Không đúng tên người dùng/mật khẩu”
- Khi nhấn vào nút “Thoát” hiển thị thông báo “Bạn có muốn thoát chương trình
không ?”
o Nếu chọn “Yes” Kết thúc chương trình.
o Ngược lại: trở lại màn hình login.
20. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 20/29
2.2 Viết chương trình quản lý học sinh với hệ thống menu và Toolbar như sau4
- Nhấn vào chức năng “Hệ thốngĐăng nhập” trong menu hoặc nút hình “Chùm khóa”
trên ToolBar, hiển thị màn hình login như trong bài tập 01.
- Nhấn vào chức năng “Quản lý học sinhThông tin học sinh” trong menu hoặc nút hình
“Mũ tốt nghiệp” trên ToolBar, hiển thị màn hình thông tin sinh viên như trong bài tập 03.
- Nhấn vào chức năng “Hệ thốngThoát”: Kết thúc chương trình
4
Sinh viên có thể dùng bài thiết kế này để làm Project Quản lý Sinh viên.
21. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 21/29
- Hệ thống Menu như sau:
- Hướng dẫn sử dụng
- Tác giả
Hệ thống thực đơn
Hệ thống Danh mục Quản lý học sinh Báo cáo thống kê Giúp đỡ
- Cấu hình hệ thống
- Quản lý người dùng
- Đăng nhập
- Đổi mật khẩu
- Thoát
- Danh mục giáo viên
- Danh mục quận huyện
- Danh mục loại hồ sơ
- Hồ sơ học sinh
- Phân lớp
- Xem điểm
- Điểm danh
- Khen thưởng
- Kỷ luật
- Thống kê danh sách học sinh
- Bảng điểm
22. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 22/29
3 Phần 3: Làm việc với file
Viết chương trình thể hiện thông tin sinh viên với giao diện như hình vẽ
- Nhấn vào nút “đọc dữ liệu từ file”: đọc dữ liệu từ tập tin “ThongTinSV.txt” với định
dạng như bên dưới đưa vào các control trên màn hình.
- Định dạng tập tin “ThongTinSV.txt”5
Họ và chữ lót: Nguyễn Văn
Tên: Thịnh
Ngày Sinh: 05/11/2005
Tôn giáo: Không
Địa chỉ: 123 Trương Định – Q3
Điện Thoại: 8234567
Email: nvthinh@hcmup.edu.vn
Dân tộc: Kinh
Giới tính: Nam
Ngoại ngữ: Anh Văn, Pháp Văn
- Nhấn vào nút “Lưu dữ liệu xuống file”, ghi dữ liệu thông tin sinh viên trên màn
hình xuống tập tin “ThongTinSV.txt”
- Khi nhấn vào nút “Thoát” Kết thúc chương trình
4 Phần 4: Đồ họa GDI+
4.1 Sử dụng hộp thoại Font:
Thiết kế Form theo mẫu:
5
File này lưu cùng thư mục với chương trình chạy (exe).
23. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 23/29
Yêu cầu: Hiển thị hộp thoại màu (ColorDialog) để thay đổi màu nền, màu chữ.
4.2 Một số kiến thức:
Khái niệm cơ bản
1 đối tượng Graphics quản lý 1 bối cảnh đồ họa
Mỗi phương thức có nguồn gốc từ System.Windows.Forms.Form kế thừa 1 phương thức
virtual OnPaint.
Các đối số trong phương thức OnPaint bao gồm 1 đối tượng PaintEventArgs.
Graphics g = e.Graphics;
FONT
Khai báo thư viện: System.Drawing và System.Drawing.Text
4 lớp cơ bản liên quan đến đối tượng FONT: FontStyle, FontFamily,GraphicsUnit, Font
a. Hàm vẽ chuỗi:
void DrawString(string s, Font font, Brush brush, float x, float y);
void DrawString(string s, Font font, Brush brush, Point p);
b. Bút vẽ:
Pen(Color c);
Pen(Color c, float width);
Pen(Brush b);
Pen(Brush b, float width);
c. Chổi tô & Font Style:
SolidBrush: Chổi tô đặc với màu đã chọn.
SolidBrush(Color c);
FontStyle:
Thành phần Đặc tả
Bold Chữ in đậm
Italic Chữ in nghiêng
Regular Chữ bình thường
StrikeOut Chữ với đường gạch ngang thân
Underline Chữ gạch chân
FontStyle style = FontStyle.Bold;
24. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 24/29
Font(tên_font, cỡ);
Font(tên_font, cỡ, style);
d. Các hàm vẽ
Vẽ (rỗng): Draw____
Vẽ đường thẳng: DrawLine
Vẽ elip: DrawEllipse
Vẽ hình chữ nhật: DrawRectangles
…
Vẽ hình đặc: Fill____
Hàm tô hình chữ nhật:
void FillRectangle(Brush brush, int x, int y, int width, int height);
4.3 Bài tập vẽ hình
Thiết kế Form theo mẫu:
Sự kiện vẽ: Ấn chuột trái để lấy điểm đầu tiên, nhả phím chuột để xác định điểm cuối cùng. Sau đó
thực hiện vẽ và tô theo màu theo hình đã chọn trên khung vẽ.
Hướng dẫn:
//Các thuộc tính
private Color fill; //lưu trữ màu tô
private Color border; //lưu trữ màu nét vẽ
private bool mouse_is_down=false;
private Point start;
private Graphics g; //đối tượng đồ họa
//Sự kiện Form_Load
g = panel1.CreateGraphics();
border = Color.Black;
btn_border.BackColor = border;
fill = Color.Red;
btn_fill.BackColor = fill;
//Sự kiện Click chọn màu cho Border6
ColorDialog dl = new ColorDialog();
dl.FullOpen = true;
dl.AnyColor = true;
if (dl.ShowDialog() == DialogResult.OK)
{
6
SV tự cài đặt cho sự kiện click vào nút chọn màu cho màu tô (fill)
Panel
Button
FlatStyle: Flat
Name: btn_border
NumbericUpDown
Name: DoDayNetVe
Button
FlatStyle: Flat
Name: btn_fill
25. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 25/29
btn_border.BackColor = dl.Color;
border = dl.Color;
}
//Sự kiện nhấn chuột vào vùng vẽ (Panel_MouseDown)
mouse_is_down = true;
start = new Point(e.X, e.Y);
//Sự kiện nhả chuột vào vùng vẽ (Panel_MouseUp)
mouse_is_down = false;
//Sự kiện rê (di chuyển) chuột trong vùng vẽ (Panel_MouseMove)
if (mouse_is_down )
{
g.Clear(panel1.BackColor);
Point end = new Point(e.X, e.Y);
switch(comboBox1.SelectedIndex)
{ //line
case 0:
g.DrawLine(new Pen(border,(int)DoDayNetVe.Value),start, end);
break;
//empty ellipse.
case 1:
g.DrawEllipse(new Pen(border,(int)DoDayNetVe.Value), start.X,
start.Y,e.X-start.X,e.Y-start.Y);
break;
//filled ellipse
case 2:
{
g.DrawEllipse(new Pen(border,(int)DoDayNetVe.Value), start.X,
start.Y,e.X-start.X,e.Y-start.Y);
g.FillEllipse(new SolidBrush(fill),start.X, start.Y,e.X-
start.X,e.Y-start.Y);
break;
}
//empty rectangle
case 3:
g.DrawRectangle(new Pen(border,(int)DoDayNetVe.Value),
start.X, start.Y,e.X-start.X,e.Y-start.Y);
break;
//filled rectangle
case 4:
g.DrawRectangle(new Pen(border,(int)DoDayNetVe.Value),
start.X, start.Y,e.X-start.X,e.Y-start.Y);
g.FillRectangle(new SolidBrush(fill),start.X, start.Y,e.X-
start.X,e.Y-start.Y);
break;
default:
break;
}
}
26. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 26/29
5 Thiết kế chương trình tựa WordPad: RichTextEditor
5.1 Mục tiêu
• Phát triển ứng dụng Single Document Interface
• Làm quen với MenuStrip, ToolStrip, StatusStrip.
• Sử dụng các Common Dialog: OpenFileDialog, SaveFileDialog, ColorDialog…
• Sử dụng control RichTextBox.
5.2 Nội dung
Xây dựng một ứng dụng soạn thảo văn bản có các chức năng sau:
Nhóm chức năng cơ bản:
- Cho phép soạn thảo trên hai định dạng
o Cơ bản: text File (*.txt)
o Nâng cao: Rich Text Format (*.rtf)
- Cho phép định dạng các đoạn text
o Align: left, right và center.
o Format: bold, italic, underline
o Chọn font chữ
o Chọn màu chữ
o Chọn màu nền của document
- Chức năng Cut, Copy và Paste.
Nhóm chức năng nâng cao:
- Các chức năng như sau
o Open file: mở file RTF hoặc TXT
o Save file: lưu document
o New file: tạo mới document
o Chức năng chèn ảnh
o Chức năng chèn bullet
o Indent
o Zoom
o ...
27. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 27/29
Chi tiết các Menu:
28. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 28/29
5.3 Lưu ý:
- Sinh viên chỉ cần làm nhóm chức năng cơ bản là đạt yêu cầu
- Chức năng nâng cao tùy chọn, sinh viên khá giỏi nên làm.
5.4 Mở rộng:
Sinh viên có thể mở rộng bất cứ tính năng nào cho ứng dụng của mình, sự sáng tạo luôn được
đánh giá cao.
Hướng dẫn cơ bản:
Sinh viên tìm hiểu các thuộc tính cơ bản của RichTextBox control như:
- SelectionFont
- SelectionFont.Style: mô tả các kiểu chữ
o Gồm có các kiểu mô tả trong enumeration FontStyle như sau
- SelectionAlignment: thiết lập thuộc tính canh lề
o Gồm có các kiểu mô tả trong enumeration HorizontalAlignment như sau
- SelectionColor: thiết lập màu của text, sử dụng struct Color để mô tả màu
- BackColor: thiết lập màu nền cho document chứa text, sử dụng struct Color
Các phương thức của RichTextBox như:
- Cut(): cut đoạn text được chọn vào Clipboard
- Copy(): copy đoạn text được chọn vào Clipboard
- Paste(): dán đoạn text trong Clipboard vào document.
Hướng dẫn chức năng Bold trên ToolStrip:
29. Bài tập thực hành lập trình Windows Form với C#
Lương Trần Hy Hiến – hienlth@hcmup.edu.vn 29/29
Sinh viên làm tương tự với các chức năng: Italic, Underline…
Hướng dẫn chức năng canh lề
Thiết lập thuộc tính canh lề trái cho RichTextBox tên rtbDoc
rtbDoc.SelectionAlignment = HorizontalAlignment.Left;
Hướng dẫn chức năng cut, copy và paste cho RichTextBox tên rtbDoc
rtbDoc.Cut(); // cut đoạn text được chọn vào clipboard
tương tự cho copy và paste
Hướng dẫn chức năng nâng cao Insert ảnh vào document: Sinh viên tự nghiên cứu đoạn code
sau:
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "Bitmap File (*.bmp)| *.bmp"; //Mở rộng thêm
if (dlg.ShowDialog() == DialogResult.OK)
{
Image img = Image.FromFile(dlg.FileName);
Clipboard.SetDataObject(img);
DataFormats.Format df;
df = DataFormats.GetFormat(DataFormats.Bitmap);
if (this.rtbDoc.CanPaste(df))
rtbDoc.Paste(df);
}
---Chúc các bạn thành công---