(NB) Microsoft NET gồm 2 phần chính: Framework và Integrated Development Environment (IDE); Framework cung cấp những gì cần thiết và căn bản, chữ Framework có nghĩa là khung hay khung cảnh trong đó ta dùng những hạ tầng cơ sở theo một qui ƣớc nhất định để công việc đƣợc trôi chảy. IDE thì cung cấp một môi trƣờng giúp chúng ta triển khai dễ dàng, và nhanh chóng các ứng dụng dựa trên nền tảng NET.
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN
KHOA CÔNG NGHỆ THÔNG TIN
ĐỀ CƯƠNG HỌC PHẦN: LẬP TRÌNH WINFORM VÀ ADO.NET
Hưng Yên (Tài liệu lưu hành nội bộ)
Trang 2MỤC LỤC
BÀI 1: TỔNG QUAN 4
1.1 Giới thiệu về Net Framework 4
1.2 Giới thiệu về Windows Form 5
BÀI 2: MỘT SỐ ĐIỀU KHIỂN WINFORM (1) 15
2.1 Label ( ) 15
2.2 TextBox( ) 16
2.3 Button ( ) 17
2.4 CheckBox ( ) 18
2.7 RadioButton ( ) 26
BÀI 3 THỰC HÀNH 1 – CÁC ĐIỀU KHIỂN WINFORM (1) 28
BÀI 4 MỘT SỐ ĐIỀU KHIỂN WINFORM (2) 28
4.1 Timer ( ) 28
4.2 RichTextBox ( ) 29
4.3 PictureBox ( ) 30
4.4 ImageList ( ) 30
4.5 Image ( ) 30
4.6 Điều khiển ListView ( ) 31
4.7 Treeview ( ) 45
4.8 DataGridView 47
BÀI 5: THỰC HÀNH 2 – CÁC ĐIỀU KHIỂN WINFORM (2) 52
BÀI 6: MỘT SỐ ĐIỀU KHIỂN WINFORM (3) 52
6.1 MenuStrip 52
6.2 Các điều khiển hộp thoại 55
BÀI 7 THỰC HÀNH 3 – CÁC ĐIỀU KHIỂN WINFORM (3) 60
BÀI 8 GIỚI THIỆU VỀ ADO.NET 60
8.1 Giới thiệu về ADO.NET 60
8.2 Các mô hình thao tác với CSDL 61
8.3 Đối tượng Connection 62
BÀI 9 THỰC HÀNH 4- KẾT NỐI CSDL VỚI ĐỐI TƯỢNG CONNECTION 64
BÀI 10: ĐỐI TƯỢNG COMMAND, DATAREADER, PARAMETER 64
10.1 Đối tượng Command 64
10.2 Đối tượng DataReader 65
10.3 Đối tượng Parameter 66
10.4 Các thao tác thêm, sửa, xóa dữ liệu theo mô hình hướng kết nối 68 BÀI 11 THỰC HÀNH 5 – THAO TÁC CSDL THEO MÔ HÌNH HƯỚNG KẾT NỐI 75
Trang 3BÀI 12 ĐỐI TƯỢNG DATA ADAPER VÀ DATASET 75
12.1 Đối tượng DataAdaper 75
12.2 Đối tượng DataSet 75
12.3 Nạp dữ liệu vào DataSet 79
12.4 Cập nhật CSDL bằng DataAdapter 81
12.5 Các thao tác với CSDL theo mô hình phi kết 82
BÀI 13: THỰC HÀNH 6 – THAO TÁC CSDL THEO MÔ HÌNH PHI KẾT NỐI88 BÀI 14 SẮP XẾP VÀ TÌM KIẾM DỮ LIỆU VỚI DATAVIEW 88
14.1 Đối tượng DataView 88
14.2 Tìm kiếm, sắp xếp, trích lọc thông tin với DataView 89
BÀI 15 THỰC HÀNH 7 – THỰC HIỆN THAO TÁC VỚI CƠ SỞ DỮ LIỆU SỬ DỤNG DATAVIEW 92
BÀI 16 LẬP BÁO CÁO VỚI CYSTALREPORT 92
16.1 Giới thiệu 92
16.2 Thiết kế một báo cáo sử dụng Report Design Environment 92
16.3 Preview báo cáo 108
16.4 Nạp và hiển thị Report trong chương trình 109
Trang 4BÀI 1: TỔNG QUAN 1.1 Giới thiệu về Net Framework
Microsoft NET gồm 2 phần chính : Framework và Integrated Development Environment (IDE) Framework cung cấp những gì cần thiết và căn bản, chữ Framework có nghĩa là khung hay khung cảnh trong đó ta dùng những hạ tầng cơ sở theo một qui ước nhất định để công việc được trôi chảy IDE thì cung cấp một môi trường giúp chúng ta triển khai dễ dàng, và nhanh chóng các ứng dụng dựa trên nền tảng NET Nếu không có IDE chúng ta cũng có thể dùng một trình soạn thảo ví như Notepad hay bất cứ trình soạn thảo văn bản nào và sử dụng command line để biên dịch và thực thi, tuy nhiên việc này mất nhiều thời gian Tốt nhất là chúng ta dùng IDE phát triển các ứng dụng, và cũng là cách dễ sử dụng nhất
Thành phần Framework là quan trọng nhất NET là cốt lõi và tinh hoa của môi trường, còn IDE chỉ là công cụ để phát triển dựa trên nền tảng đó thôi Trong NET toàn bộ các ngôn ngữ C#, Visual C++ hay Visual Basic.NET đều dùng cùng một IDE
Tóm lại Microsoft NET là nền tảng cho việc xây dựng và thực thi các ứng dụng phân tán thế hệ
kế tiếp Bao gồm các ứng dụng từ client đến server và các dịch vụ khác Một số tính năng của Microsoft NET cho phép những nhà phát triển sử dụng như sau:
- Một mô hình lập trình cho phép nhà phát triển xây dựng các ứng dụng dịch vụ web và ứng dụng client với Extensible Markup Language (XML)
- Tập hợp dịch vụ XML Web, như Microsoft NET My Services cho phép nhà phát triển đơn giản và tích hợp người dùng kinh nghiệm
- Cung cấp các server phục vụ bao gồm: Windows 2000, SQL Server, và BizTalk Server, tất cả điều tích hợp, hoạt động, và quản lý các dịch vụ XML Web và các ứng dụng
- Các phần mềm client như Windows XP và Windows CE giúp người phát triển phân phối sâu
và thuyết phục người dùng kinh nghiệm thông qua các dòng thiết bị
- Nhiều công cụ hỗ trợ như Visual Studio NET, để phát triển các dịch vụ Web XML, ứng dụng trên nền Windows hay nền web một cách dể dàng và hiệu quả
Kiến trúc NET Framework
.NET Framework là một platform mới làm đơn giản việc phát triển ứng dụng trong môi trường phân tán của Internet .NET Framework được thiết kế đầy đủ để đáp ứng theo quan điểm sau:
- Để cung cấp một môi trường lập trình hướng đối tượng vững chắc, trong đó mã nguồn đối tượng được lưu trữ và thực thi một cách cục bộ Thực thi cục bộ nhưng được phân tán trên Internet, hoặc thực thi từ xa
- Để cung cấp một môi trường thực thi mã nguồn mà tối thiểu được việc đóng gói phần mềm và
sự tranh chấp về phiên bản
Trang 5- Để cung cấp một môi trường thực thi mã nguồn mà đảm bảo việc thực thi an toàn mã nguồn, bao gồm cả việc mã nguồn được tạo bởi hãng thứ ba hay bất cứ hãng nào mà tuân thủ theo kiến trúc NET
- Để cung cấp một môi trường thực thi mã nguồn mà loại bỏ được những lỗi thực hiện các script hay môi trường thông dịch
- Để làm cho những người phát triển có kinh nghiệm vững chắc có thể nắm vững nhiều kiểu ứng dụng khác nhau Như là từ những ứng dụng trên nền Windows đến những ứng dụng dựa trên web
- Để xây dựng tất cả các thông tin dựa triên tiêu chuẩn công nghiệp để đảm bảo rằng mã nguồn trên NET có thể tích hợp với bất cứ mã nguồn khác
Các thành phần của NET FrameWork
.NET Framework có hai thành phần chính: Common Language Runtime (CLR) và thư viện lớp NET Framework CLR là nền tảng của NET Framework Chúng ta có thể hiểu runtime như là một agent quản lý mã nguồn khi nó được thực thi, cung cấp các dịch vụ cốt lõi như: quản lý bộ nhớ, quản lý tiểu trình, và quản lý từ xa Ngoài ra nó còn thúc đẩy việc sử dụng kiểu an toàn và các hình thức khác của việc chính xác mã nguồn, đảm bảo cho việc thực hiện được bảo mật và mạnh mẽ
Thư viện lớp, một thành phần chính khác của NET Framework là một tập hợp hướng đối tượng của các kiểu dữ liệu được dùng lại, nó cho phép chúng ta có thể phát triển những ứng dụng từ những ứng dụng truyền thống command-line hay những ứng dụng có giao diện đồ họa (GUI) đến những ứng dụng mới nhất được cung cấp bởi ASP.NET, như là Web Form và dịch vụ XML Web
1.2 Giới thiệu về Windows Form
Windows Form là ứng dụng có giao diện đồ họa chạy trên hệ điều hành Window (GUI -
Graphical User Interface), Windows Forms là ứng dụng chạy trên máy tính của người dùng (DeskTop)
Trang 6Khác với Web Forms là ứng dụng chạy trên Web Forms Khi ứng dụng chạy thì hiển thị kết quả lên trình
duyệt Windows Forms là một phần của kiến trúc NET
C3 Chọn công cụ New Project trên thanh Standart
Bước 1: Khởi động VS2008 và chọn Fille New Project …
Bước 2: Chọn Ứng dụng dạng Windows Forms Application, chọn nơi lữu trữ Project (xem hình) nhấn OK
Trang 71.2.2 Thêm và điều chỉnh các điều khiển
Sau khi tạo dự án, một Form được tạo ra như hình bên dưới:
Để thêm các điều khiển vào Form, chúng ta có thể kéo các điều khiển bên công cụ Toolbox vào Form đó
Trang 8Để chỉnh sửa các điều khiển (thêm, thay đổi kích thước, xóa…) chúng ta có thể chọn các điều khiển nhấn nút Delete nếu muốn xóa, nếu muốn thay đổi kích thước thì chúng ta chỉ việc chọn vào điều khiển và kéo điều khiển có kích thước như mong muốn:
1.2.3 Tải các tập tin
Visual Studio hỗ trợ làm việc với nhiều tập tin (xml, Excel, Word…) với những tập tin đơn giản chúng ta có thể chỉnh sửa trực tiếp trên bộ công cụ này Các file này hiển thị trên công vụ Solution Explorer:
Trang 9Để chỉnh sửa nội dung file chúng ta có thể click trực tiếp vào file và sửa trên hộp thoại hiện ra:
1.2.4 Thay đổi kích thước các Form
Form (hay còn gọi điều khiển Form) dùng để chứa các điều khiển khác (Buttons, Label…)
Trong một dự án có thể có nhiều Form:
Trang 10Tùy theo mỗi ứng dụng khác nhau mà chúng ta có các yêu cầu về kích thước Form khác nhau cho phù hợp với chương trình Để thay đổi kích thước Form chúng ta chỉ cần chọn Form kéo một trong các ô vuông hiện ra ở bên mép của Form:
Hoặc chúng ta có thể thay đổi trực tiếp kích thước của Form thông qua thuộc tính Size:
C1 Vào menu File | Open | Project / Solution C2
Ctrl + Shift + O
C1 Vào menu File | Save All
C2 Chọn công cụ Save All trên thanh Standart
d Đóng Solution: Vào menu File | Close Solution
1.2.5 Màn hình giao diện của Windows Forms
a Cửa sổ thiết kế Form (Designer):
Trang 11b Cửa sổ thiết viết code:
1.2.6 Các thao tác với Form
a Thêm một Form mới vào Project:
b1 C1 Vào menu Project | Add New Item …
C2 Chọn công cụ Add New Item trên thanh Standart b2
Khai báo
+ Categories: chọn Windows Forms
+ Templates: chọn Windows Form
+ Name: đặt tên Form b3
Nhắp Add
b Thêm một Form có sẵn vào Project: b1
Vào menu Project | Add Existing Item … b2
Chọn Form
b3 Nhắp Add
b1 Chọn Form cần gỡ bỏ (ở cửa sổ Solution Explorer)
b2 Vào menu Edit | Delete
Trang 12d Lưu Form
Vào menu File | Save Form.cs
Ctrl + S
Ghi chú
- Ta kéo vào form các đối tượng như: Label, TextBox, Button, …
+ Label, TextBox, Button, … được gọi là control hay còn gọi là component
+ Form được gọi là control “chứa”
- Khi thay đổi nội dung của Label, TextBox, Button, … ta thay đổi vào Text Text được
gọi là Property của control
Các control sử dụng trên Windows Forms dùng namespace System.Windows.Forms
Properties là những thông tin mà ta có thể thay đổi nội dung, cách trình bày của người thiết
Anchor Có 4 hướng được định nghĩa là: top, bottom, left, right để cố định
(neo) Khi control chứa nó thay đổi kích thước thì nó sẽ bị thay đổi kích thước nếu nếu các hướng left / right / top / bottom bị cố định (neo)
BackColor Màu nền của control
Bottom Là khoảng cách theo chiều dọc từ cạnh đáy của control đến cạnh
trên của control chứa nó
Dock Giống như Anchor nhưng việc cố định (neo) này theo một cạnh nào
đó của control (hoặc cả 4 cạnh) với control chứa nó
Enabled Control được phép tương tác (True) hay không được phép tương
tác (False)) với người dùng
ForeColor Màu chữ của control
Height Là chiều cao của control tính từ cạnh trên của control đến cạnh dưới của
control
Left Là khoảng cách theo chiều ngang từ cạnh trái của control đến cạnh trái
của control chứa nó
Name Tên của control
Parent Chỉ đến control chứa control hiện hành
Right Là khoảng cách theo chiều ngang từ cạnh phải của control đến cạnh trái
của control chứa nó
TabIndex Thứ tự focus khi nhấn phím Tab (trên bàn phím) của control so với các
control khác cùng nằm trong control chứa nó
TabStop Chỉ định control có được phép “bắt” (True) / không được phép “bắt”
(False) phím Tab Nếu không được phép thì TabIndex cũng không dùng được
Trang 13Tag Là nhãn phân biệt giữa các control giống nhau trong cùng form
Text Nội dung hiện trong control
Top Là khoàng cách theo chiều dọc từ cạnh trên của control đến cạnh trên
của control chứa nó
Visible Cho phép control hiện (True) / không hiện (False) khi chạy ứng dụng
Width Là chiều rộng của control tính từ cạnh trái của control đến cạnh phải của
control
Xác định giá trị thuộc tính cho điều khiển, chọn điều khiển cần thiết lập thuộc tính, hiển thị cửa sổ Property (Nhấn phím F4, hoặc nhấn chuột phải, chọn Show property) , chọn biểu tượng thuộc tính của Control và thay đổi giá trị các thuộc tính theo nhu cầu
Mỗi một control có một tập các phương thức, mà control có thể thực hiện được và có
c Events (Sự kiện) của control
Sự kiện là những phản ứng của đối tượng Nói cách khác, sự kiện là những tín hiệu phát ra khi người dùng thao tác trên đối tượng Nhờ có event, người lập trình sẽ nhận được những tín hiệu và xử lý những tín hiệu đó để phản hồi lại cho người dùng, tạo nên sự nhịp nhàng cho chương trình
Bảng sau trình bày một số sự kiện thường dùng
Click Gọi đến khi control bị Click Trong một vài control, event này cũng xảy
ra khi người dùng nhấn phím Enter
DoubleClick Gọi đến khi control bị Double-Click Trong một vài control, event này
không báo giờ được gọi Ví dụ: control Button
DragDrop Gọi đến khi việc “Drag and Drop” được hoàn tất
DragEnter Gọi đến khi đối tượng vừa được “Drag” đến biên của control
DragLeave Gọi đến khi đối tượng vừa được “Drag” ra ngoài biên của control
DragOver Gọi đến khi đối tượng được “Drag” bên trong control
KeyDown Gọi đến khi vừa bấm một phím bất kỳ từ 1 control đang focus
Sự kiện này luôn được gọi trước sự kiện KeyUp
Trang 14KeyPress Gọi đến khi vừa bấm một phím bất kỳ từ 1 control được focus
Sự kiện này được gọi sau sự kiện KeyUp
KeyUp Gọi đến khi vừa bấm một phím bất kỳ rồi thả ra từ 1 control đang focus
Sự kiện này luôn được gọi sau sự kiện KeyDown
GotFocus Gọi đến khi control được focus
LostFocus Gọi đến khi control bị mất focus
MouseDown Gọi đến khi con trỏ chuột nằm trên 1 control và nút chuột được nhắp
nhưng chưa thả ra
MouseMove Gọi đến khi con trỏ chuột đi qua 1 control
MouseUp Gọi đến khi con trỏ chuột nằm trên 1 control và nút chuột vừa được thả
Paint Gọi đến khi control được vẽ
Validated Gọi đến khi control focus, property CaucesValidation được đặt là true
và sau khi gọi việc kiểm tra bằng Validating
Validating Gọi đến khi control mất focus, property CaucesValidation được đặt là
true
Chọn sự kiện để viết mã lệnh cho control, chọn điều khiển cần thiết lập thuộc tính, hiển thị cửa sổ Property (Nhấn phím F4, hoặc nhấn chuột phải, chọn Show property), chọn biểu tượng sự kiện trên cửa
sổ Property, sau đó chọn sự kiện của điều khiển cần thực hiện
Chú ý: Để dừng chương trình chúng ta sử dụng các câu lệnh sau
this.Close(); // Đóng form hiện hành
Application.Exit // Kết thúc ứng dụng
Trang 15BÀI 2: MỘT SỐ ĐIỀU KHIỂN WINFORM (1) 2.1 Label ( )
- Công dụng: Là điều khiển dùng để hiển thị tiêu đề hay văn bản mang tính mô tả, mà người dùng
không thể thay đổi Label dùng để định danh cho các điều khiển khác trên Form được gọi là Label mô tả Label dùng để hiển thị kết quả đầu ra
- Thêm label vào Form: Để thêm điều khiển Label vào Form ta chọn biểu tượng label trên thanh Toolbox, sau đó kéo thả vào form Với các điều khiển khác cũng thực hiện tương tự
- Thuộc tính hay dùng:
AutoSize Cho phép tự động thay đổi kích thước của Label để
vừa với nội dung BoderStyle Xác định hình dáng đường viền của Label
Font Tên Font, kiểu và kích thước văn bản được hiển thị
trên Label
Location Vị trí của Label trên form tương ứng với góc bên
trái của form
Trang 16Size Chỉ ra chiều rộng và chiều cao của Label
TextAlign Chỉ ra cách căn văn bản trong Label
- Xác định giá trị thuộc tính cho điều khiển Label (tương tự cho các điều khiển khác): Chọn điều khiển, hiển thị cửa sổ Property (Nhấn phím F4, hoặc nhấn chuột phải, chọn Show property) và thay đổi giá trị các thuộc tính theo nhu cầu
2.2 TextBox( )
- Chức năng: Điều khiển Textbox cho phép bạn nhập và hiển thị dữ liệu
- Một số thuộc tính thường dùng:
AcceptsTab Nhận một trong hai giá trị True hay False
- True: Khi nhấn phím Tab thì con trỏ (Focus) chỉ
di chuyển bên trong Textbox (Với điều kiện thuộc tính Multiline=True)
- False: Khi nhấn Tab thì Focus di chuyển qua lại giữa các điều khiển trên Form
→ Thuộc tính này hay đặt bằng True trong các ứng dụng soạn thảo văn bản
ContextMenuStrip Chọn Menu ngữ cảnh khi nhấn chuột phải vào
Textbox
HideSelection Nhận một trong hai giá trị True hay False
- True: Không cho phép các thuộc tính:
SelectionStart…có hiệu lực
- False: Ngược lại
- True: Cho phép nhập và hiển thị giá trị của Textbox trên nhiều dòng (người dùng có thể nhìn thấy toàn bộ giá trị Text của nó)
- False: Cho phép nhập/hiển thị giá trị của Textbox trên một dòng
Trang 17PasswordChar Hiển thị giá trị của Textbox dưới dạng các kí tự mà
bạn thay thế (kí tự do người dùng nhập vào: *, # ) ReadOnly
ScrollBars Cho phép hiển thị thanh trượt hay không? (Với điều
kiện thuộc tính Multiline=True mới nhìn thấy thanh cuộn)
- True: có thể Undo lại được (như Word)
- False: Ngược lại Các thuộc tính SelectionText o SelectedText
Select Lấy ra một chuỗi trong Textbox (xem Code)
SelectAll Lấy tất cả giá trị của Textbox
2.3 Button ( )
- Công dụng: Dùng để thực thi lệnh Khi nhắp chuột lên button, chương trình nhận được tín hiệu
Click và lệnh được thi hành
- Thuộc tính:
Trang 18Minh họa thuộc tính Text của Textbox:
private void btTextbox_Click(object sender, EventArgs e)
{ //Trước khi gán thuộc tính text
MessageBox.Show("Giá trị textbox trước khi gán: "+ textBox1.Text);
Minh họa thuộc tính SelectedText
private void btTextbox_Click(object sender, EventArgs e)
{
//Thuộc tính SelectedText lấy ra một chuỗi mà bạn bôi đen (Chọn) //Bạn hãy bôi đen một vài từ trong Textbox sau đó Click vào Button này sẽ hiển thị
//Message thông báo từ bạn chọn
string str = textBox1.SelectedText;
MessageBox.Show("Từ bạn vừa chọn (bôi đen) là: "+str);
}
Minh họa thuộc tính SelectionStart và SelectionLength
private void btTextbox_Click(object sender, EventArgs e)
{
//Thuộc tính này dùng trong tìm kiếm rất nhiều
//Thuộc tính SelectionStart: Ví trí bắt đầu Select
//Thuộc tính SelectionLength: Chiều dài của vùng lựa chọn
Trang 19Minh họa thuộc tính CanUndo và phương thức Undo
private void btTextbox_Click(object sender, EventArgs e)
{
//Nếu có thể Undo (có nghĩa: Bạn phải gõ văn bản vào Textbox rồi sửa, xóa )
//Mới có thể Undo lại được
if (textBox1.CanUndo)
textBox1.Undo();
}
Minh họa phương thức Select
private void btTextbox_Click(object sender, EventArgs e)
{
//Cú pháp chung: txtNoiDung.Select(Start, Length);
//Mục đích để lấy về một chuỗi từ từ vị trí nào và chiều dài của chuỗi dược chọn (tất nhiên: bôi đen vùng này)
//-> Phương thức này tương đương với sử dụng 2 thuộc tính SelectionStart và
Trang 20//textBox1.SelectionStart = 5;
}
Minh họa phương thức AppendText
private void btTextbox_Click(object sender, EventArgs e)
if (e.KeyChar >= '0' && e.KeyChar <= '9') e.Handled = false;//Handled: Được xử lý else
e.Handled = true;
}
Xử lý chỉ cho phép Textbox nhập số (sự kiện KeyPress của Textbox) – Cách 2
private void txtNoiDung_KeyPress(object sender, KeyPressEventArgs e) {
if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar)) e.Handled = true;
Trang 21//(các phím mũi tên,Delete,Insert,backspace,space bar…) hay không, mục đích dùng hàm này là để cho phép người dùng xóa số trong trường hợp nhập sai }
Ví dụ :
Khởi tạo một ứng dụng Windows Forms Application, lưu với tên là Ví dụ 1 như sau:
* Yêu cầu:
- Nhập:
+ Username vào TextBox Tên đăng nhập (Name: txtUser)
+ Password vào TextBox Mật khẩu (Name: txtPass)
- Chọn hoặc không chọn ô CheckBox Ghi nhớ (Name: chkNho)
- Nhắp button Đăng nhập thì hiện ra hộp thông báo chứa Tên đăng nhập, Mật khẩu; Và
“Bạn có ghi nhớ” (nếu chkNho có đánh dấu chọn)
- Nhắp button Xóa thì xóa trống TextBox Tên đăng nhập và TextBox Mật khẩu, đồng
thời di chuyển con trỏ vào txtUser
Trang 221 - Thiết kế form như mẫu
(txtsSo1, txtSo2, txtKQ, btnCong, btnTru, btnNhan, btnChia, btnXoa)
- Viết chương trình làm các phép toán: cộng, trừ, nhân, chia cho các button btnCong, btnTru, btnNhan, btnChia
- Xóa: Xóa trắng các TextBox
- Thêm vào button Dừng (btnDung), khi nhắp vào btnDung thì dừng chương trình
Trang 233 Viết chương trình giải phương trình bậc hai: ax2 + bx + c = 0
4 Viết chương trình nhập vào: họ tên (txtHoTen), nữ (chkNu), điểm văn (txtVan), điểm toán (txtToan), điểm ngoại ngữ (txtNN)
- Nhắp vào nút Tính (btnTinh) thì in ra điểm thấp nhất (txtDTN), điểm kết quả (txtDKQ),
xếp loại (txtXL) Biết rằng:
+ Điểm thấp nhất: txtDTN là điểm thấp nhất trong 3 điểm: văn, toán, ngoại ngữ
+ Điểm thêm: DThem = 0.5 nếu là nữ; DThem = 0 nếu là nam
+ Điểm kết quả: txtKQ = txtVan * 2 + txtToan * 2 + txtNN + DThem
+ Xếp loại theo tiêu chuẩn:
Giỏi: nếu txtKQ >= 40 và txtDTN >= 7
Khá: nếu txtKQ >=35 và txtDTN >= 6
Trung bình: nếu txtKQ >= 25 và txtDTN >= 5
Yếu: các trường hợp còn lại
- Nhắp vào nút Xóa (btnXoa) thì xóa hết các nội dung trong các TextBox
- Thêm vào button Dừng, khi nhắp vào button này thì dừng chương trình
5 Viết chương trình tạo một ứng dụng gồm:
- Form1: Màn hình chính có 5 button: Bài tập 1 (btnBT1), Bài tập 2 (btnBT2), Bài tập 3
(btnBT3), Bài tập 4 (btnBT4), Thoát (btnThoat)
+ Khi nhắp vào Button Bài Tập 1: mở Form2
+ Khi nhắp vào Button Bài Tập 2: mở Form3
+ Khi nhắp vào Button Bài Tập 3: mở Form4
+ Khi nhắp vào Button Bài Tập 4: mở Form5
- Form2: thực hiện bài tập 1 Bổ sung Button Trở về để đóng Form2
- Form3: thực hiện bài tập 2 Bổ sung Button Trở về để đóng Form3
- Form4: thực hiện bài tập 3 Bổ sung Button Trở về để đóng Form4
- Form5: thực hiện bài tập 4 Bổ sung Button Trở về để đóng Form5
Điều khiển tập hợp:
Là một kiểu dữ liệu dùng lưu trữ nhiều phần tử có cùng đặc tính Ví dụ: Mảng, Tập các nút lệnh chứa trên Form, tập các phần tử (Item) của Combobox, Listbox………
Các thuộc tính, phương thức lớp Collection
Count/Length: Lấy về số phần tử của tập hợp
Add, AddRange: Thêm phần tử vào tập hợp
Remove, RemoveAt: Xóa phần tử khỏi tập hợp
Clear: Xóa toàn bộ các phần tử khỏi tập hợp
Insert: Chèn một phần tử vào tập hợp (Khác với Add luôn thêm phần tử mới vào cuối tập
hợp, Insert thêm vào một vị trí xác định nào đó trong tập hợp)
Items[i]: Lấy một phần tử thứ i trong tập hợp
Trang 24Duyệt các phần tử trong tập hợp
Để duyệt các phần tử trong tập hợp người ta thường sử dụng vòng lặp ForEarch
foreach (biến in biến_Tập_hợp)
* Nhập giá trị vào ListBox: <Ten_ListBox>.Items.Add ("Chuỗi") ;
* Lấy giá trị trong ListBox: <Ten_ListBox>.SelectedItem.ToString() ;
Trang 25- Nhắp button btnOk (Ok) sẽ hiện trong txtKQ tên website đƣợc chọn ở lstWeb
- Nhắp button btnReset (Reset) sẽ xóa trống txtKQ
- Nhắp đúp vào button Ok rồi thêm đoạn code sau:
this.txtKQ.Text = "Bạn đã chọn website "+ this.lstWeb.SelectedItem.ToString();
* Cải tiến:
Chọn sự kiện FormLoad đƣa đoạn mã lệnh sau vào sự kiện
this.lstWeb.Items.Add("Tuổi trẻ"); this.lstWeb.Items.Add("Thanh niên");
DisplayMember Gán nội dung thể hiện trên ComboBox
Items Liệt kê các mục giá trị trong ComboBox
SelectedItem Lấy Item đƣợc chọn
SelectedText Lấy nội dung thể hiện trên ComboBox từ DisplayMember
SelectedValue Lấy giá trị từ ValueMember
ValueMember Gán giá trị cho ComboBox
Trang 26+ Radio Button (rad1): chữ thường
+ Radio Button (rad2): chữ HOA
- Nhắp vào Button Kết quả (btnKQ) sẽ in họ và tên bằng kiểu chữ được chọn trong TextBox txtKQ
- Nhắp vào Button Xóa (btnXoa) sẽ xóa trống txtHoTen, txtKQ, rad1 được chọn và đưa con trỏ vào ô TextBox txtHoTen
+ Text: Đổi kiểu chữ
- Nhắp đúp vào nút Kết quả rồi thêm đoạn code sau:
Trang 28BÀI 3 THỰC HÀNH 1 – CÁC ĐIỀU KHIỂN WINFORM (1) BÀI 4 MỘT SỐ ĐIỀU KHIỂN WINFORM (2)
4.1 Timer ( )
- Công dụng: Quy định khoảng thời gian định kỳ để thực hiện một công việc
- Thuộc tính:
Thuộc tính Mô tả
Enabled Bật / tắt chế độ hẹn thời gian của điều khiển Timer
Interval Khoảng thời gian định kỳ tính bằng đơn vị ms
Ví dụ:
* Tạo một Form với tên HenGio như sau:
* Yêu cầu:
- Tạo Timer1 có Enabled = false; Interval = 1000
- Khởi tạo biến đếm i = 20
- Button Bắt đầu (btnBatDau): dùng để bật chế độ hẹn thời gian
- Button Dừng (btnDung): dùng để dừng chương trình
- Timer1: Đếm ngược từ 20 đến 1 và xuất ra dòng chữ “Hết giờ”
+ Xuất giá trị biến đếm i ra Label lblDongHo
+ Giảm biến i xuống 1 đơn vị
+ Khi biến đếm i < 0 thì tắt chế độ hẹn giờ và xuất “Hết giờ!” ra Label lblDongHo
- Nhắp đúp vào nút Timer1 (Timer1_Tick) rồi thêm đoạn code sau:
this.lblDongHo.Text = i.ToString(); i ;
if (i < 0)
this.timer1.Enabled = false;
Trang 294.2 RichTextBox ( )
- Công dụng: Điều khiển RitchTextBox dùng để lưu trữ và hiển thị văn bản theo nhiều định
dạng khác nhau (định dạng chuẩn là rtf)
Điều khiển RitchTextBox có rất nhiều các thuộc tính giống Textbox nói riêng
và các điều khiển khác nói chung Ý nghĩa của các thuộc tính này là giống nhau với
các điều khiển Ở đây chúng ta xét một số thuộc tính khác của RitchTextBox
Thuộc tính Mô tả
ReadOnly Không cho soạn thảo, chỉ đọc
SelectedText Lấy về chuỗi được lựa chọn (chuỗi mà chúng ta bôi đen)
SelectionStart,
SelectionLength
Lấy về một chuỗi với vị trí bắt đầu và chiều dài, hai thuộc tính này thường đi với nhau
SelectionFont Lấy thông tin về Font của một chuỗi được lựa chọn (bôi đen)
SelectionColor Lấy thông tin về Color của chuỗi được bôi đen được lựa chọn
CanUndo Trả lại hai giá trị True/False
- True: có thể Undo lại được (như Word)
- False: Ngược lại
CanRedo Tương tự như thuộc tính CanUndo
- Phương thức thường dùng
Tên phương thức Ý nghĩa
AppendText Nối một chuỗi vào RitchTextBox
Copy Xử lý phần nội dung bôi đen (như Word)
Cut
Paste
Find Tìm kiếm một xâu trong RitchTextBox
Focus Chuyển Focus vào RitchTextBox
LoadFile Đọc nội dung một file vào RitchTextBox
SaveFile Ghi nội dung của RitchTextBox ra file
Select Lấy ra một chuỗi trong RitchTextBox (tương tự
TextBox) SelectAll Lấy tất cả nội dung của RitchTextBox
Redo Xử lý Undo, Redo như Word
Trang 30Image Gán kiểu Image hiển thị trên PictureBox
ImageLocal Gán đường dẫn cho ảnh hiển thị trên PictureBox
SizeModel Chọn kiểu kích thước của PictureBox
4.4 ImageList ( )
- Công dụng: Dùng để quản lý tập các Image (Image, Icon…) Thường sử dụng điều khiển
ImageList với các điều khiển khác: ListView, TreeView, Toolbar, NotifyIcon
Thuộc tính Mô tả
Images Chứa danh sách các Image Có thể đưa các Image hay Icon vào thông qua
giao diện (Cửa sổ Properties) hay mã lệnh (Tập các Image trong ImageList là một Collection nên nó có đầy đủ các phương thức của Collection)
Truy xuất tới một Image trong ImageList theo cú pháp:
Trang 31* Yêu cầu:
- Tạo PictureBox, và các Button như thiết kế
- Button Xem (btnXem): dùng để hiển thị ảnh trong 1 đường dẫn trên máy tính
- Button Không xem (btnKhongXem): dùng để không hiển thị ảnh
* Hướng dẫn:
Thiết kế Form như yêu cầu, trong đó form có các thuộc tính sau:
- Trong sự kiện FormLoad viết câu lệnh sau
private void FrmPicture_Load(object sender, EventArgs e)
4.6 Điều khiển ListView ( )
- Công dụng: Điều khiển ListView dùng để trình bày các phần tử dạng danh sách với nhiều hình
dạng khác nhau
- Một số khái niệm liên quan đến ListView
Trang 32Minh họa về ListView
Cột trong ListView
Trang 33Khái niệm ColumnHeader
Khái niệm ListViewItem
Trang 34Khái niệm SubItems
Minh họa về Group
- Một số thuộc tính thường dùng:
CheckBoxes Nhận một trong hai giá trị True hay False (mặc định là False)
- True: Hiển thị một checkbox bên cạnh phần tử
đầu tiên của mỗi hàng (1 hàng = 1 ListviewItem)
trong Listview
Trang 35- False: Ngược lại
Columns Tập các cột trong ListView là một Collection Thông qua thuộc
tính này có thể thêm các cột vào Listview (Có thể thêm các cột vào Listview thông qua giao diện đồ họa hay có thể viết Code
Chú ý: Phải đặt thuộc tính View là Detail thì bạn mới có thể nhìn
thấy các cột này) ContextMenuStrip Gắn một menu ngữ cảnh với điều khiển ListView (khi nhấn
chuột phải vào Listview thì sẽ hiển thị menu này) FullRowSelect Nhận một trong hai giá trị True hay False
- True: Cho phép chọn (bôi đen) cả hàng (của phần
tử đang được chọn Chú ý: Thuộc tính View = Detail)
- False: Ngược lại GridLines Nhận một trong hai giá trị True hay False
- True: Hiển thị lưới bao quanh và ngăn cách các hàng (Chỉ có hiệu lực nếu thuộc tính View = Detail)
- False: Ngược lại
Group Khai báo nhóm để phân loại các phần tử sau khi trình bày trên
điều khiển Listview HeaderStyle Đây là thuộc tính cho phép chọn Style cho Listview trong chế độ
View là Report
Items Là một Collection Cho phép tạo ra các giá trị cho các hàng, cột
trong Listview (tất nhiên có thể dùng giao diện đồ họa hay viết Code)
LabelEdit Nhận một trong hai giá trị True hay False
- True: Cho phép thay đổi (sửa) Text của các phần
tử (các Ô)
- False: Ngược lại LabelWap Nhận một trong hai giá trị True hay False
- True: Chuỗi DHSPKTHY sẽ tự động xuống hàng khi chiều dài không đủ để trình bày
- False: Ngược lại
Trang 36MultiSelect Nhận một trong hai giá trị True hay False
- True: Cho phép chọn nhiều hàng (ListviewItem) Mặc định là True
- False: Không cho phép chọn nhiều hàng LargeImageList Đối tƣợng ImageList chứa danh sách các Image theo chỉ số
(Index) từ 0 đến n-1 Đƣợc sử dụng nếu thuộc tính View là LargeIcon
SmallImageList Đối tƣợng ImageList chứa danh sách các Image theo chỉ số
(index) từ 0 đến n-1 Đƣợc sử dụng nếu thuộc tính View là SmallIcon
Scrollable Nhận một trong hai giá trị True hay False
- True: Cho phép xuất hiện thanh trƣợt trong Listview (Khi số ListViewItem nhiều và vƣợt qua chiều cao của ListView)
- False: Ngƣợc lại Sorting Sắp xếp giá trị các hàng (ListViewItem) trong ListView (Chỉ có
hiệu lực nếu thuộc tính View là Detail) Thuộc tính này nhận một trong các giá trị sau
None: Không Sắp xếp
Ascending: Sắp xếp tăng
Descending: Sắp xếp giảm
SelectedItems Trả về danh sách các phần tử đƣợc chọn (bôi đen)
CheckedItems Trả về danh sách các phần tử đƣợc check (tất nhiên thuộc tính
Trang 37- Một số phương thức thường dùng:
RemoveAt Xóa bỏ một cột có chỉ số (ở vị trí) nào đó
ItemChecked Khi Check vào biểu tƣợng Checkbox của mỗi phần tử trên
điều khiển ListView
Giả sử chúng ta có một form có tên: frmListView Trên đó có chứa một số điều khiển sau:
Điều khiển ListView có tên listView1 (Chúng ta để tất cả các thuộc tính của listView1 với
giá trị mặc định)
Button btCheck: minh họa việc duyệt các hàng đƣợc check trên ListView
Buttonbt RemoveAtColumns: Minh họa xóa một cột trong ListView
Buttonbt RemoveAtItems: Minh họa xóa một hàng trong ListView
Buttonbt ShowFile: Minh họa hiển thị tất cả các file trong một thƣ mục nên ListView
Button btGroup: Minh họa về Group trong ListView
Chúng ta sẽ minh họa sử dụng ListView qua sự kiện Click của các button trên
Tạo các cột, hàng cho ListView bằng code
private void frmListView_Load(object sender, EventArgs e) {
//Đặt một số thuộc tính cho điều khiển ListView1 bằng code //Bạn chỉ có thể nhìn thấy các cột nếu đặt thuộc tính View=Detail listView1.View = View.Details;
Trang 38listView1.Columns.Add("Họ và tên", 100, HorizontalAlignment.Center);
listView1.Columns.Add("Quê quán", 100, HorizontalAlignment.Center);
listView1.Columns.Add("Lớp", 100, HorizontalAlignment.Center);
//Cách 2: Có thể thêm vào theo cách này: Sử dụng ColumnHeader
ColumnHeader ch = new ColumnHeader("chNgaySinh");
ch.Text = "Ngày sinh";
ch.TextAlign = HorizontalAlignment.Center;
ch.Width = 100;
listView1.Columns.Add(ch);
//Thêm hàng thứ nhất vào ListView
string[] Them = new string[] { "Nguyễn Văn Hải", "Hƣng Yên", "TK4N1", 03-1987" };
ListViewItem lv = new ListViewItem(Them);
Trang 39Duyệt xem những hàng nào được Check
private void btCheck_Click(object sender, EventArgs e)
{
//Bạn phải tạo ra một Listview như mục 7.1 trước đã
MessageBox.Show("Tên các sinh viên được Check là","Check",MessageBoxButtons.OK);
//Duyệt các phần tử được Check thông qua thuộc tính CheckedItems
foreach (ListViewItem lvi in listView1.CheckedItems)
Xóa một Cột tại vị trí nào đó
private void btRemoveAtColumns_Click(object sender, EventArgs e)
Trang 40Hình 7.2: Columns ↔ Collection
Xóa một hàng tại một vị trí nào đó
→ Hoàn toàn tương tự như xóa một cột
private void btRemoveAtItems_Click(object sender, EventArgs e)