Tuy nhiên có điềm khác biệt với Panel là TabPage hỗ trợ thuộc tính Text, chuỗi mô tả được thiết lập trong thuộc tính Text sẽ hiển thị trên tab của TabPage:. Hình 18.9[r]
(1)UBND TỈNH BÀ RỊA – VŨNG TÀU
TRƯỜNG CAO ĐẲNG KỸ THUẬT CÔNG NGHỆ
GIÁO TRÌNH
MƠ ĐUN: LẬP TRÌNH WINDOWS FORMS NGHỀ: CƠNG NGHỆ THƠNG TIN
TRÌNH ĐỘ: CAO ĐẮNG
(Ban hành kèm theo Quyết định số: /QĐ-CĐKTCN
(2)(3)TUYÊN BỐ BẢN QUYỀN
Nhằm đáp ứng nhu cầu học tập nghiên cứu cho giảng viên sinh viên nghề Công nghệ Thông tin trường Cao đẳng Kỹ thuật Công nghệ Bà Rịa – Vũng Tàu, thực biên soạn tài liệu Lập trình Windows Forms
Tài liệu biên soạn thuộc loại giáo trình phục vụ giảng dạy học tập, lưu hành nội Nhà trường nên nguồn thơng tin phép dùng nguyên trích dùng cho mục đích đào tạo tham khảo
(4)LỜI GIỚI THIỆU
Giáo trình Lập trình Windows Forms biên soạn dựa khung chương trình đào tạo Cao đẳng nghề Công nghệ Thông tin Trường Cao đẳng Kỹ thuật Công nghê Bà Rịa – Vũng Tàu phê duyệt
Bên cạnh nhằm giúp cho người học kiến thức kỹ cần thiết để thiết kế lập trình ứng dụng nhỏ sống ngày
Tác giả nghiên cứu số tài liệu, trang web liên quan kết hợp với kinh nghiệm làm việc, giảng dạy thực tế để biên soạn giáo trình
Trong giáo trình bao gồm sau: Bài 1: Giới thiệu tổng quan
Bài 2: Các thành phần
Bài 3: Sử dụng câu lệnh nhập xuất bản, cấu trúc điều khiển if Bài 4: Sử dụng cấu trúc lựa chọn switch case, for, for each Bài 5: Sử dụng cấu trúc vòng lặp while, do…while
Bài 6: Sử dụng câu lệnh break, continue, goto Bài 7: Hàm
Bài 8: Thiết kế lớp đối tượng
Bài 9: Định nghĩa thuộc tính, phương thức hành động cho lớp đối tượng
Bài 10: Sử dụng Form, MenuStrip
Bài 11: Sử dụng Button, Label, TextBox
Bài 12: Sử dụng Checkbox, RadioButton, GroupBox Bài 13: Sử dụng ComboBox, ListBox
(5)Bài 16: Sử dụng PictureBox, ToolTip
Bài 17: Sử dụng CheckListBox, NumericUpDown Bài 18: Sử dụng Panel, SplitContainer, TabControl Bài 19: Tạo kết nối, đóng kết nối sở liệu Bài 20: Truy xuất sở liệu Dataset Bài 21: Hiển thị sở liệu DataGridView Bài 22: Truy xuất sở liệu BindingSource Bài 23: Hiển thị sở liệu BindingNavigator Bài 24: Cập nhật sở liệu
Với tiêu chí trình bày động, dễ hiểu áp dụng thực tế, kèm theo chi tiết bước hướng dẫn thực hành cụ thể giúp cho người học dễ tiếp thu kiến thức cần thiết hình thành kỹ thực hành rèn luyện thao tác
Trong trình biên soạn, chắn giáo trình cịn nhiều thiếu sót Tác giả mong nhận ý kiến đóng góp q thầy/cơ em sinh viên để tiếp tục hoàn thiện
Xin chân thành cảm ơn quý đồng nghiệp, bạn bè có ý kiến đóng góp trình xây dựng giáo trình
Bà Rịa – Vũng Tàu, ngày …… tháng …… năm 2020 Tham gia biên soạn
(6)MỤC LỤC
LỜI GIỚI THIỆU
BÀI 1: GIỚI THIỆU TỔNG QUAN 10
1.1 Giới thiệu ứng dụng thực tế 10
1.2 Khởi động, chương trình 11
1.3 Sử dụng hệ thống trợ giúp 15
Câu hỏi ôn tập tập 15
BÀI 2: CÁC THÀNH PHẦN CƠ BẢN 16
2.1 Hệ thống ký hiệu từ khóa 16
2.2 Các kiểu liệu 17
2.3 Biến, hằng, biểu thức 19
2.4 Các phép toán 21
Câu hỏi ôn tập tập 26
BÀI 3: SỬ DỤNG CÂU LỆNH NHẬP XUẤT CƠ BẢN, CẤU TRÚC ĐIỀU KHIỂN IF 28
3.1 Các câu lệnh nhập xuất 28
2 Câu lệnh if else 32
Câu hỏi ôn tập tập 36
BÀI 4: SỬ DỤNG CẤU TRÚC LỰA CHỌN SWITCH CASE, FOR, FOR EACH 38
2 Câu lệnh switch 38
2 Câu lệnh for 40
3 Câu lệnh for …each 49
Câu hỏi ôn tập tập 52
BÀI 5: SỬ DỤNG CẤU TRÚC LỰA VÒNG LẶP WHILE, DO…WHILE 54
3 Sử dụng cấu trúc vòng lặp While 54
2 Sử dụng cấu trúc vòng lặp Do …while 57
(7)BÀI 6: SỬ DỤNG CÂU LỆNH BREAK, CONTINUE, GOTO 60
4 Sử dụng câu lệnh break 60
2 Sử dụng câu lệnh continue 61
3 Sử dụng câu lệnh goto 62
Câu hỏi ôn tập tập 64
BÀI 7: HÀM 65
5 Khái niệm 65
2 Quy tắc xây dựng hàm 65
3 Nguyên tắc hoạt động hàm 66
4 Cách truyền tham số 68
5 Sử dụng hàm 69
Câu hỏi ôn tập tập 72
BÀI 8: THIẾT KẾ LỚP ĐỐI TƯỢNG 73
7 Định nghĩa lớp đối tượng 73
2 Khai báo lớp đối tượng 74
Câu hỏi ôn tập tập 77
BÀI : ĐỊNH NGHĨA CÁC THUỘC TÍNH, PHƯƠNG THỨC HÀNH ĐỘNG CHO LỚP ĐỐI TƯỢNG 78
8 Định nghĩa thuộc tính cho lớp đối tượng 78
2 Định nghĩa phương thức hành động cho lớp đối tượng 80
Câu hỏi ôn tập tập 83
BÀI 10: SỬ DỤNG FORM, MENUSTRIP 85
9 Form 85
2 Menustrip 96
Câu hỏi ôn tập tập 99
BÀI 11: SỬ DỤNG LABEL, TEXTBOX, BUTTON 102
11 Label 102
(8)3 Button 108
Câu hỏi ôn tập tập 110
BÀI 12: SỬ DỤNG CHECKBOX, RADIOBUTTON, GROUPBOX 113
13 Checkbox 113
2 RadioButton 115
3 GroupBox upload.123doc.net Câu hỏi ôn tập tập 121
BÀI 13: SỬ DỤNG COMBOBOX, LISTBOX 123
1 ComboBox 123
2 ListBox 125
Câu hỏi ôn tập tập 128
BÀI 14: SỬ DỤNG DATETIMEPICKER, MONTHCALENDAR 129
1 DateTimePicker 129
2 MonthCalendar 130
Câu hỏi ôn tập tập 132
BÀI 15: SỬ DỤNG LISTVIEW, TREEVIEW 133
1 ListView 133
2 TreeView 138
Câu hỏi ôn tập tập 142
BÀI 16: SỬ DỤNG PICTUREBOX, TOOLTIP 144
1 PictureBox 144
2 ToolTip 145
Câu hỏi ôn tập tập 148
BÀI 17: SỬ DỤNG CHECKLISTBOX, NUMERICUPDOWN 150
1 CheckListBox 150
2 NumericUpDown 152
Câu hỏi ôn tập tập 154
(9)1 Panel 156
2 SplitContainer 157
3 TabControl 161
Câu hỏi ôn tập tập 166
BÀI 19: TẠO KẾT NỐI, ĐÓNG KẾT NỐI CƠ SỞ DỮ LIỆU 168
1 Các kiểu liệu kết nối 168
2 Tạo kết nối liệu 171
3 Đóng kết nối sở liệu 176
Câu hỏi ôn tập tập 177
BÀI 20: TRUY XUẤT CƠ SỞ DỮ LIỆU BẰNG DATASET 178
1 Định nghĩa Dataset 178
2 Thao tác truy xuất liệu với Dataset 179
Câu hỏi ôn tập tập 181
BÀI 21: HIỂN THỊ CƠ SỞ DỮ LIỆU BẰNG DATAGRIDVIEW 183
1 Ý nghĩa DataGridView 183
2 Các thiết lập thuộc tính 185
3 Truy xuất hiển thị liệu control DataGridView 186
Câu hỏi ôn tập tập 189
BÀI 22: TRUY XUẤT CƠ SỞ DỮ LIỆU BẰNG BINDINGSOURCE 191
1 Ý nghĩa BindingSource 191
2 Cách thiết lập thành phần 192
3 Truy xuất hiển thị liệu BindingSource 192
Câu hỏi ôn tập tập 193
BÀI 23: HIỂN THỊ CƠ SỞ DỮ LIỆU BẰNG BINDINGNAVIGATOR 194
1 Ý nghĩa BindingNavigator 194
2 Cách thiết lập thành phần 195
3 Truy xuất hiển thị liệu BindingNavigator 196
(10)BÀI 24: THAO TÁC VỚI CƠ SỞ DỮ LIỆU 198
1 Các kiểu liệu, cập nhật sở liệu 198
2 Truy xuất cập nhật liệu 200
Câu hỏi ôn tập tập 202
(11)GIÁO TRÌNH MƠ ĐUN Tên mơ đun: Lập trình Windows forms
Mã mơ đun: MĐ 20
Vị trí, tính chất, ý nghĩa vai trị mơ đun:
- Vị trí mơ đun: Mơ đun bố trí sau học sinh học xong mô đun Cơ sở liệu, Lập trình bản, Quản trị sở liệu SQL Server
- Tính chất mơ đun: Là mô đun chuyên môn nghề Đây mô đun chứa đựng kiến thức tảng ngôn ngữ lập trình ứng dụng xây dưng phần mềm ứng dụng quản lý
- Ý nghĩa vai trò môn học/mô đun: Môn học giúp thực hành giao diện lập trình ứng dụng nhỏ như: quản lý quán café, quản lý khách sạn, quản lý nhân viên, quản lý sinh viên…
Mục tiêu mô đun: - Về kiến thức:
+ Trình bày kiểu liệu C#
+ Trình bày câu lệnh, cấu trúc điều khiển, rẽ nhánh + Trình bày control xây dựng giao diện
- Về kỹ năng:
+ Xác định, phân tích chức yêu cầu để lên kế hoạch xây dựng chương trình ứng dụng
+ Thiết kế giao diện chương trình ứng dụng
+ Vận dụng kiến thức xây dựng chức ứng dụng + Kiểm tra xử lý có hệ thống lỗi cố ứng dụng
+ Đóng gói ứng dụng triển khai - Về lực tự chủ trách nhiệm:
+ Chủ động việc thực tế hóa ứng dụng phần mềm (Xây dựng ứng dụng làm toán, )
(12)+ Gia công phần mềm theo yêu cầu khách hàng
(13)BÀI 1: GIỚI THIỆU TỔNG QUAN
Mã bài: 19.01 Giới thiệu:
C# hay Csharp ngơn ngữ lập trình họ DotNet Microsoft lập trình C# người lập trình phải chuẩn bị cài đặt NET Framework
Mục tiêu:
- Trình bày nhu cầu xây dựng ứng dụng thực tế - Cài đặt, thao tác chương trình ViSual Studio - Thao tác hệ thống trợ giúp từ trình đơn Help - Rèn luyện tính cẩn thận, sáng tạo, làm việc nhóm Nội dung chính:
1.1 Giới thiệu ứng dụng thực tế .NET Framework ?
.NET Framework tảng phát triển hoàn hảo Microsoft, cung cấp cho lập
trình viên thư viện dùng chung hỗ trợ cho việc phát triển kiểu ứng dụng khác bao gồm:
- Ứng dụng ASP.NET - Ứng dụng Windows Form - Web Services
- Windows Services
- Ứng dụng mạng ứng dụng điều khiển truy cập từ xa Các ứng dụng thực tế:
(14)1.2 Khởi động, chương trình
Để tải Visual Studio 2019, thực vào
link: https://visualstudio.microsoft.com/download
Hình 1.1 Màn hình Download phần mềm cài đặt Visual Studio
Ở có phiên Visual Studio 2019 Đó là: Community, Professional Enterprise Với Sinh Viên tải Community
File sau tải được lưu trữ sau:
(15)Hình 1.3 Màn hình download tiến hành cài đặt
Tùy vào tốc độ máy đường truyền mạng, sau tải xong ta có đây:
Hình 1.4 Màn hình lựa chọn để cài đặt
Chọn Desktop Application (Winform, WPF) Tương tự cho Universal Windows Platform development , Mobile (Xamarin) nhấp chọn vào
(16)Hình 1.5 Lựa chọn cấu hình cài đặt
Trong hình Đăng nhập để bấm Sign In Dùng tài khoản Gmail tài khoản Microsoft để đăng nhập quyền dùng Visual Studio
(17)Hình 1.7 Đăng nhập username mật khẩu Cung cấp mật Sign in bình thường
Khởi động chương trình Visual Studio 2019
Hình 1.8 Màn hình khởi động chương trình Visual Studio Màn hình sau khởi động thành cơng
Hình 1.9 Lựa chọn chức làm việc Ở hình có lựa chọn chính:
(18)- Continue without code: Chọn mục mở Visual Studio mà khơng có Project
- “Create a New Project”: Chương trình hiển thị hình tạo Project
Hình 1.10 Lựa chọn mơi trường ngơn ngữ làm việc
Tìm kiếm, lọc theo: Ngơn ngữ lập trình (C#, VB ), lọc theo Platform(Android, IOS, Windows…), theo Project Type(Cloud, Console, Machine Learning…)
Hình 1.11 Màn hình lựa chọn nơi lưu Project 1.3 Sử dụng hệ thống trợ giúp
Nhấp vào mục Help chọn View Help (Ctrl + F1) để tìm tài liệu khắc phúc lỗi trang web:
(19)Câu hỏi ôn tập tập
1 Tiến hành cài đặt Visual Studio máy tính
(20)BÀI 2: CÁC THÀNH PHẦN CƠ BẢN
Mã bài: 19.02 Giới thiệu:
Việc hiểu rõ thành phần cách thức sử dụng ngơn ngữ lập trình giúp làm việc dễ dàng thực hành, thao tác với ngôn ngữ Hệ thống từ khóa, kiểu liệu bản, cách xây dựng biểu thức, biến, xây dựng chương trình
Mục tiêu:
- Trình bày sử dụng hệ thống ký hiệu, từ khóa, kiểu liệu bản, biến, biểu thức
- Vận dụng loại biến, biểu thức vào tập mẫu - Vận dụng loại biến, biểu thức vào tập ứng dụng - Rèn luyện tính cẩn thận, tự giác, sáng tạo, làm việc nhóm Nội dung chính:
2.1 Hệ thống ký hiệu từ khóa
C# ngơn ngữ có từ khóa: ngơn ngữ sử dụng giới hạn từ khóa, khoảng 80 từ khóa 10 kiểu liệu xây dựng sẵn bảng 1.1
Bảng 2.1: Bảng mô tả từ khóa C#
abstract default foreach object sizeof unsafe as delegate goto operator stackalloc ushort
base if out static using
bool double implicit override string virtual
break else in params struct volatile
byte enum int private switch void
case event interface protected this while catch explicit internal public throw decimal
char extern is readonly true for
checked false lock ref try null
class finally long return typeof short const fixed namespace sbyte uint unchecked
continue float new sealed ulong
2.2 Các kiểu liệu bản
(21)Biến kiểu giá trị lưu trữ giá trị thực, giá trị lưu trữ stack, mang giá trị null phải chứa giá trị xác định
Bảng 2.2: Bảng mô tả kiểu liệu giá trị C# Kiểu
C#
Số Byte
Kiểu
.NET Mô tả
byte Byte Số nguyên dương không dấu: đến 255
char Char Ký tự Unicode
bool Boolean Giá trị logic true/ false
sbyte Sbyte Số nguyên có dấu: -128 đến 127
short Int16 Số nguyên có dấu: -32.768 đến 32.767 ushort Uint16 Số nguyên không dấu: đến 65.535
int Int32 Số nguyên có dấu: -2.147.483.647 đến 2.147.483.647
uint Uint32 Số nguyên không dấu: đến 4.294.967.295
float Single
Kiểu dấu chấm động, giá trị xấp xỉ từ 3,4E-38 đến 3,4E+38; với chữ số có nghĩa
double Double
Kiểu dấu chấm động, giá trị xấp xỉ từ 1,7E-308 đến 1,7E+308; với 15, 16 chữ số có nghĩa
decimal Decimal
Có độ xác đến 28 số giá trị thập phân, dùng tính tốn tài chính, kiểu địi hỏi phải có hậu tố “m” hay “M” theo sau giá trị
long Int64
Kiểu số nguyên có dấu có giá trị khoảng: -9.233.370.036.854.775.808 đến – 9.233.372.036.854.775.807
ulong Uint64 Số nguyên không dấu từ đến 0xffffffffffffff
Lưu ý:
(22)Ví dụ 1.5: float a=0.15f;
Kiểu giá trị bool C# thiết phải true false Chuyển kiểu liệu:
Chuyển đổi kiểu liệu C# thực cách sau:
Sử dụng lớp Convert:
Đây lớp C# xây dựng sẵn phục vụ cho việc chuyển đổi từ kiểu liệu sang kiểu liệu khác Các phương thức lớp Convert phần lớn phương thức tĩnh:
- ToInt32(<Tham số>) - ToInt64(<Tham số>) - ToString(<Tham số>) - ToDouble(<Tham số>) - ToBoolean(<Tham số>) - ToByte(<Tham số>) …
<Tham số>: chuỗi ký tự, số, biến số nguyên, số thực kiểu bool Nếu trình chuyển kiểu đặt tham số null hàm Convert trả giá trị mặc định
int a = Convert.ToInt32(“10”); //chuyển chuỗi 10 sang số nguyên
bool b = Convert.ToBoolean(27); //chuyển số 27 sang kiểu boolean
bool a = Convert.ToBoolean(“hello”); //Sai định dạng, không chuyển
int b = Convert.ToInt32(“123456787654”); //Tràn nhớ, không chuyển
double d = Convert.ToDouble(null); //Trả giá trị mặc định
Sử dụng phương thức Parse:
Phương thức Parse thường sử dụng để chuyển đổi chuỗi sang kiểu liệu cụ thể Mỗi kiểu liệu xây dựng sẵn C# hỗ trợ phương thức Parse để chuyển đổi chuỗi sang kiểu liệu tương ứng:
(23)- Boolean.Parse(<chuoi>): Chuyển chuỗi kiểu Boolean - Single.Parse(<chuoi>): Chuyển chuỗi kiểu Single - …
Ví dụ
int a = Int32.Parse(“123”); //a mang giá trị 123
float b = Float.Parse(“20.7”); //b mang giá trị 20.7
bool c = Boolean.Parse(“true”); //c mang giá trị true
int a = Int32.Parse(“Hello”); //sai định dạng, không chuyển
byte b = Byte.Parse(“10000000000”); //quá giới hạn, không chuyển
bool c = Boolean.Parse(null); //tham số null, không chuyển
2.3 Biến, hằng, biểu thức 2.3.1 Biến
Biến nơi lưu trữ liệu chương trình Dữ liệu biến nằm nhớ vật lý Ram thay đổi Muốn sử dụng biến trước tiên lập trình phải định biến có kiểu liệu cụ thể
Cú pháp khai báo biến:
<Kiểu liệu> <Tên biến>
Lưu ý: Tên biến phải đặt phù hợp với quy tắc đặt tên
Cú pháp khởi tạo giá trị cho biến:
<Tên biến> = <giá trị> Trong đó:
= phép toán gán giá trị
Quy tắc đặt tên: Các tên biến, tên hằng, tên hàm, … C# đề phải đặt tên với quy tắc sau:
Một tên biến bắt đầu chữ hoa hay chữ thường Tên chứa ký
tự
hay số ký tự gạch (_)
(24) Các từ khóa khơng thể sử dụng để đặt tên cho biến Nếu muốn dùng từ khóa
đặt tên ta thêm ký tự @ phía trước Ví dụ: Employee: student: _Name: Emp_Name: @goto: static: 4myclass: Student&Falculty: Hợp lệ Hợp lệ Hợp lệ Hợp lệ Hợp lệ
Khơng hợp lệ, trùng từ khóa
Không hợp lệ, bắt đầu ký tự số Không hợp lệ, không chứa ký tự đặc biệt 2.3.2 Hằng
Hằng biến giá trị không thay đổi Biến công cụ mạnh, nhiên làm việc với giá trị định nghĩa không thay đổi, ta phải đảm bảo giá trị khơng thay đổi suốt chương trình Ví dụ, lập chương trình thí nghiệm hóa học liên quan đến nhiệt độ sơi, hay nhiệt độ đơng nước, chương trình cần khai báo hai biến DoSoi DoDong, không cho phép giá trị hai biến bị thay đổi hay bị gán Để ngăn ngừa việc gán giá trị khác, ta phải sử dụng biến kiểu
Hằng phân thành ba loại: giá trị (literal), biểu tượng (symbolic constants), kiểu liệu kê (enumerations)
Giá trị hằng: ta có câu lệnh gán sau: x = 100;
Giá trị 100 giá trị Giá trị 100 100 Ta gán giá trị khác cho 100
Biểu tượng hằng: gán tên cho giá trị hằng, để tạo biểu tượng dùng từ khóa const cú pháp sau:
<const> <type> <tên hằng> = <giá trị>;
(25)const int DoSoi = 100;
Trong khai báo trên, 100 số DoSoi biểu tượng có kiểu ngun
2.4 Các phép tốn
2.4.1 Toán tử (Operator) C#
Các phép toán khơng thể thiếu ngơn ngữ lập trình C#
Bảng 2.3: Bảng mô tả tốn tử C#
Tốn tử Tên Ví dụ Kết quả
+ Cộng x+y Tổng x y
- Trừ x-y Hiệu x y
* Tích x*y Tích x y
/ Chia x/y Phần nguyên thương x chia y
% Chia dư x%y Phần dư thương x chia y Ví dụ:
(26)Một số toán tử gán sử dụng C#:
Bảng 2.4: Bảng mơ tả tốn tử phép gán C#
Tốn tử Ví dụ Kết quả
= x=y Gán giá trị y cho x
+= x+=y Gán giá trị x = x+y
-= x-=y Gán giá trị x = x-y
*= x*=y Gán giá trị x = x*y
/= x/=y Gán giá trị x = x/y
%= x%=y Gán giá trị x = x%y
<<= x<<=3 Gán giá trị x = x<<3 >>= x>>=3 Gán giá trị x = x>>3
&= x&=2 Gán giá trị x = x&2 (Phép AND bit) ^= x^=2 Gán giá trị x = x^2 (Phép OR loại trừbit) |= x|=2 Gán giá trị x = x|2 (Phép OR bit)
(27)Kết chạy chương trình
2.4.3 Tốn tử tăng giảm tiền tố hậu tố:
Giả sử ta muốn tăng giá trị biến x gán cho biến y, ta làm sau: y = x++; y = ++x;
Vậy đâu điểm khác biệt cú pháp ? Giả sử cho giá trị biến x = ta phân tích
Khi lệnh y = x++; thực phép gán thực trước tiên sau đến phép tốn tăng Ta gọi tăng hậu tố, giá trị biến x = 10 y =
Còn lệnh y = ++x; phép toán tăng thực trước đến toán tử gán Ta gọi tăng tiền tố, giá trị x y 10
(28)Đôi lúc muốn kết hợp nhiều điều kiện với ví dụ bắt buộc hai biểu thức điều kiện cần biểu thức thực lệnh Trong C# hỗ trợ tốn tử logic sau:
Bảng 2.5: Bảng mô tả toán tử logic C# Toán
tử
Ký
hiệu Cú pháp Miêu tả
AND && <BT1> &&
<BT2> Trả true OR || <BT1>||<BT2> Trả true biểu
thức
NOT ! !(BT) Trả phủ định biểu thức
trong ngoặc 2.4.5 Toán tử quan hệ
Các toán tử quan hệ thường dùng để so sánh hai giá trị, sau trả kết giá trị logic kiểu boolean (true false)
Giả sử ta có biến x = y = Các tốn tử C# trình bày đây:
Bảng 2.6: Bảng mơ tả tốn tử quan hệ C#
Toán tử Ký hiệu Biểu thức so
sánh Kết so sánh
So sánh == x==5 true
Không != x!=y true
Lớn > x>y true
Lớn hay >= x>=y true
Nhỏ < x<y false
Nhỏ hay <= x<=y false
Lưu ý: toán tử so sánh (==) ký hiệu hai dấu dính liền khơng có khoảng cách chúng Trình biên dịch C# xem toán tử
(29)Những câu lệnh mà thực việc đánh giá giá trị gọi biểu thức Một phép gán giá trị cho biến biểu thức:
var1 = 24;
Trong câu lệnh phép đánh giá hay định lượng phép gán có giá trị 24 cho biến var1 Lưu ý tốn tử gán (‘=’) khơng phải toán tử so sánh Do sử dụng toán tử biến bên trái nhận giá trị phần bên phải Các tốn tử ngơn ngữ C# phép so sánh hay phép gán trình bày chi tiết mục tốn tử chương
Do var1 = 24 biểu thức định giá trị 24 nên biểu thức xem phần bên phải biểu thức gán khác:
var2 = var1 = 24;
Lệnh thực từ bên phải sang biến var1 nhận giá trị 24 tiếp sau var2 nhận giá trị 24 Do hai biến nhận giá trị 24 Có thể dùng lệnh để khởi tạo nhiều biến có giá trị như:
a = b = c = d = 24;
* Khoảng trắng (whitespace)
Trong ngôn ngữ C#, khoảng trắng, khoảng tab dòng xem khoảng trắng (whitespace), giống tên gọi xuất khoảng trắng để đại diện cho ký tự C# bỏ qua tất khoảng trắng đó, viết sau:
var1=24; Hay var1 = 24; trình biên dịch C# xem hai câu lệnh hoàn toàn giống
Tuy nhiên lưu ý khoảng trắng chuỗi không bỏ qua Nếu viết:
System.WriteLine(“Xin chao!”);
mỗi khoảng trắng hai chữ “Xin” “chao” đối xử bình thường ký tự khác chuỗi
(30)hơn Cũng ta viết văn MS Word khơng trình bày tốt khó đọc gây cảm tình cho người xem Cịn trình biên dịch việc dùng hay khơng dùng khoảng trắng không khác
Tuy nhiên, cần lưu ý sử dụng khoảng trắng sau:
int x = 24; t ương tự như: int x=24; khơng giống như: intx=24;
Trình biên dịch nhận biết khoảng trắng hai bên phép gán phụ bỏ qua, khoảng trắng khai báo kiểu tên biến khơng phải phụ hay thêm mà bắt buộc phải có tối thiểu khoảng trắng Điều khơng có bất hợp lý, khoảng trắng cho phép trình biên dịch nhận biết từ khố int khơng thể nhận intx.Tương tự C/C++, C# câu lệnh kết thúc với dấu chấm phẩy ‘;’ Do câu lệnh nhiều dịng, dịng nhiều câu lệnh thiết hai câu lệnh phải cách dấu chấm phẩy
2.4.6 Câu lệnh (statement)
Trong C# dẫn lập trình đầy đủ gọi câu lệnh Chương trình bao gồm nhiều câu lệnh với Mỗi câu lệnh phải kết thúc với dấu chấm phẩy, ví dụ như:
int x; // câu lệnh x = 32; // câu lệnh khác
int y =x; // câu lệnh
Những câu lệnh xử lý theo thứ tự Đầu tiên trình biên dịch bắt đầu vị trí đầu danh sách câu lệnh câu lệnh lệnh cuối cùng, nhiên cho trường hợp câu lệnh không phân nhánh
(31)Ngồi cịn có câu lệnh làm cho số đoạn chương trình thực nhiều lần, câu lệnh gọi câu lệnh lặp hay vòng lặp Bao gồm lệnh lặp for, while, do, in, each đề cập tới mục
Câu hỏi ôn tập tập
1 Tạo project dạng Console thực khai báo loại biến sau: Biến chieudai, chieurong, chuvi, dientich kiểu liệu int
Biến so1, so2, so3, min, max kiểu số thực (float)
2 Tạo project dạng Console thực khai báo loại sau: Hằng số thực p = 3.14
(32)BÀI 3: SỬ DỤNG CÂU LỆNH NHẬP XUẤT CƠ BẢN, CẤU TRÚC ĐIỀU KHIỂN IF
Mã bài: 19.03 Giới thiệu:
Trong này, nội dung học giúp phân tích để hiểu cú pháp chương trình C# Nội dung học hướng dẫn sử dụng lệnh xuất hình Console.WriteLine(); lệnh nhập liệu vào từ bàn phím lệnh Console.Read() Đồng thời tìm hiểu cấu trúc lệnh có điều kiện if…else
Mục tiêu:
- Trình bày biết sử dụng câu lệnh nhập xuất - Trình bày biết sử dụng cấu trúc lệnh rẽ nhánh if else
- Vận dụng câu lệnh nhập xuất để viết chương trình Console - Vận dụng cấu trúc rẽ nhánh if else để viết chương trình Console - Rèn luyện tính cẩn thận, tự giác, sáng tạo, làm việc nhóm
Nội dung chính:
3.1 Các câu lệnh nhập xuất bản 3.1.1 Console.Write();
Cú pháp:
Console.Write(<giá trị cần in hình>);
Ý nghĩa: In giá trị hình console Giá trị ký tự, chuỗi, giá trị chuyển kiểu chuỗi
Ta dùng lệnh cho chương trình phải dừng lại đợi nhấn phím kết thúc trước nhấn phím quan sát kết hình console Các lệnh sử dụng Console.Read(); Console.ReadLine(); Console.ReadKey(); 3.1.2 Console.WriteLine(); Cú pháp:
(33)Ý nghĩa:
Lệnh tượng tự Console.Write()
Nhưng khác in giá trị hình xong tự động đưa trỏ xuống dòng Điều giúp ta giải vấn đề đặt phần
Ngồi ra, để xuống dịng ta cịn có nhiều cách khác như:
Sử dụng ký tự đặc biệt: sử dụng ký tự “\n” chuỗi in hình trình biên dịch tự động đổi thành ký tự xuống dịng
Như thay dùng Console.WriteLine(“K team”) ta dùng Console.Write (“K team \n”)
3.1.3 Console.Read(); Cú pháp:
Console.Read();
Ý nghĩa:
Đọc ký tự từ bàn phím trả kiểu số nguyên mã ASCII (American Standard Code for Information Interchange – Chuẩn mã trao đổi thơng tin Hoa Kì, kí tự mã kí tự dựa bảng chữ La Tinh dùng tiếng Anh đại ngôn ngữ Tây Âu khác) ký tự
Chú ý: lệnh khơng đọc phím chức năng Ctrl, Shift, Alt, Caps Lock, Tab,
3.1.4 Console.ReadLine(); Cú pháp:
Console.ReadLine();
Ý nghĩa: Đọc liệu từ bàn phím gặp ký tự xuống dịng dừng (Nói cách khác đọc nhấn enter dừng) giá trị đọc ln chuỗi
3.1.5 Console.ReadKey(); Cú pháp:
Console.ReadKey(<tham số kiểu bool>)
(34) Lệnh dùng để đọc ký tự từ bàn phím trả kiểu ConsoleKeyInfo (là kiểu liệu có cấu trúc định nghĩa sẵn để chứa ký tự bàn phím bao gồm phím chức năng) Tham số kiểu bool bao gồm giá trị: true false Nếu truyền
vào true phím ấn khơng hiển thị lên hình console mà đọc ngầm ngược lại phím ấn hiển thị lên hình console Nếu khơng truyền tham số vào mặc định false
Ví dụ:
Viết chương trình nhập vào thơng tin sinh viên bao gồm: Họ tên, giới tính, ngày sinh, địa chỉ, tuổi
Để
Bước 1: Mở Visual Studio Chọn File Chọn Project…
Hình 3.1: Màn hình tạo Project
Chọn Visual C# chọn Console App (.NET Framework) Nhập Name, chọn
Location Chọn OK
(35)Sau tạo xong Project cấu trúc thư mục lưu vào Solution
Hình 3.3: Màn hình quản lý Solution Một Solution gồm nhiều Project có cấu trúc sau:
Hình 3.4: Màn hình quản lý Project
Nhấp chuột phải vào Solution
Chọn Add Thêm project
Danh sách dự án project
(36)Hình 3.5: Màn hình gán cho Project chạy đầu tiên Project sau tạo
Hình 3.6: Màn hình ban đầu cửa sổ làm việc Program.cs Bước 2: Viết xử lý cho Program.cs
(37)Hình 3.7: Code để nhập xuất thơng tin sinh viên Bước 3: Chạy chương trình
Trước chạy chương trình cần biên dịch kiểm tra lỗi Solution vừa tạo Khi kiểm tra cịn lỗi chương trình chạy với lần biên dịch trước
Hình 3.8: Kiểm tra lỗi Solution Kiểm tra lỗi trước chạy
(38)Hình 3.9: Màn hình thơng báo lỗi chương trình
Chọn Start nhấp vào biểu tượng để chạy chương trình Phím tắt (F5)
Hình 3.10: Chọn biểu tượng để thực thi (chạy) chương trình Giao diện chương trình chạy sau nhập thơng tin sinh viên
Hình 3.11: Màn hình hiển thị kết chương trình Màn hình thơng báo lỗi
(39)3.2 Câu lệnh if else
Câu lệnh phân nhánh if else dựa điều kiện Điều kiện biểu thức kiểm tra giá trị bắt đầu gặp câu lệnh Nếu điều kiện kiểm tra đúng, câu lệnh hay khối câu lệnh bên thân câu lệnh if thực
Trong câu điều kiện if else else phần tùy chọn Các câu lệnh bên thân else thực điều kiện if sai Do câu lệnh đầy đủ if else dùng có hai if else thực Ta có cú pháp câu điều kiện if else sau:
if (biểu thức điều kiện)
<Khối lệnh thực điều kiện đúng> [else
<Khối lệnh thực điều kiện sai>]
Nếu câu lệnh thân if hay else mà lớn lệnh lệnh phải bao khối lệnh, tức phải nằm dấu khối { }:
if (biểu thức điều kiện) {
<Lệnh 1> <Lệnh 2> } [else
{
<lệnh 1> <lệnh 2> }]
(40)Kết chương trình:
Hình 3.12 Màn hình kết câu lệnh if…else
Trong ví dụ trên, câu lệnh if kiểm tra xem giá trị var1 có lớn giá trị var2 không Biểu thức điều kiện sử dụng toán tử quan hệ lớn (>), toán tử khác nhỏ (<), hay (==) Các toán tử thường xuyên sử dụng lập trình kết trả giá trị hay sai
Việc kiểm tra xác định giá trị var1 lớn var2 sai (vì var1 = 10 var2 = 20), lệnh else thực hiện, lệnh in hình:
(41)Kết chương trình:
Hình 3.13 Màn hình kết nhiều câu lệnh if…else
Trong ví dụ trên, câu lệnh if kiểm tra xem giá trị var1 có lớn giá trị var2 khơng Biểu thức điều kiện sử dụng toán tử quan hệ lớn (>), toán tử khác nhỏ (<), hay (==) Các toán tử thường xuyên sử dụng lập trình kết trả giá trị hay sai
Việc kiểm tra xác định giá trị var1 lớn var2 sai (vì var1 = 10 var2 = 20), lệnh else thực hiện, lệnh in hình:
(42)Tiếp theo đến câu lệnh if thứ hai, sau thực lệnh gán giá trị var1 = 30, lúc điều kiện if nên câu lệnh khối if thực kết in ba dòng sau:
Gan gia tri var1 cho var2 Tang bien var1 len mot Var1 = 31, var2 = 30 * Câu lệnh if lồng nhau
Các lệnh điều kiện if lồng để phục vụ cho việc xử lý câu điều kiện phức tạp Việc thường xuyên gặp lập trình Giả sử cần viết chương trình có u cầu xác định tình trạng kết hôn công dân dựa vào thông tin tuổi, giới tính, tình trạng nhân, dựa số thơng tin sau:
• Nếu cơng dân nam độ tuổi kết 20 với điều kiện chưa có gia đình
• Nếu cơng dân nữ độ tuổi kết 19 với điều kiện chưa có gia đình
(43)Dựa yêu cầu ta dùng lệnh if lồng để thực Ví dụ sau minh họa cho việc thực yêu cầu
Kết chương trình:
Hình 3.14 Màn hình kết if…else lồng Câu hỏi ơn tập tập
1 Viết chương trình cho phép người dùng nhập tên hiển thị câu: Mơn học Lập trình Windows Form chào bạn + <Tên vừa nhập>
2 Viết chương trình nhập vào thông tin: Tên
(44)(45)BÀI 4: SỬ DỤNG CẤU TRÚC LỰA CHỌN SWITCH CASE, FOR, FOR EACH
Mã bài: 19.04 Giới thiệu:
Cũng giống ngôn ngữ khác câu lệnh lặp câu lệnh rẽ nhánh giúp xử lý nhu cầu thực tế lập trình việc chọn lựa nhiều giá trị tùy theo điều kiện khác Đồng thời, tiến hành lặp lại cơng việc cụ thể giới hạn lặp định
Mục tiêu:
- Trình bày thực hành sử dụng cấu trúc lệnh switch…case - Trình bày thực hành sử dụng cấu trúc lệnh for, for each
- Vận dụng cấu trúc lệnh switch…case để viết chương trình Console - Vận dụng cấu trúc for, for each để viết chương trình Console - Rèn luyện tính cẩn thận, tự giác, sáng tạo, làm việc nhóm
Nội dung chính: 4.1 Câu lệnh switch
Khi có nhiều điều kiện để chọn thực dùng câu lệnh if rối rắm dài dòng, Các ngơn ngữ lập trình cấp cao cung cấp dạng câu lệnh switch liệt kê giá trị thực giá trị thích hợp C# cung cấp câu lệnh nhảy switch có cú pháp sau:
switch (<biểu thức>) {
case <giá trị thứ 1>: <câu lệnh thứ 1>; break;
case <giá trị thứ 2>: <câu lệnh thứ 2>; break;
case <giá trị thứ n>: <câu lệnh thứ n>; break;
default: <câu lệnh mặc định>; break;
}
(46) switch, case, default từ khóa bắt buộc
<biểu thức> phải biểu thức trả kết kiểu:
o Số nguyên (int, long, byte, ) o Ký tự chuỗi (char, string)
Kiểu liệt kê
<giá trị thứ i> với i = n giá trị muốn so sánh với giá trị <biểu thức>
<câu lệnh thứ i> với i = n câu lệnh muốn thực <giá trị thứ i> tương ứng với giá trị <biểu thức>
<câu lệnh mặc định> câu lệnh thực giá trị <biểu thức> không với <giá trị thứ i>
Ý nghĩa: Duyệt từ xuống kiểm tra xem giá trị <biểu thức> có với <giá trị thứ i> xét hay khơng Nếu thực <câu lệnh thứ i> tương ứng Nếu không tất <giá trị thứ i> thực <câu lệnh mặc định>
Cũng tương tự câu lệnh if, biểu thức để so sánh đặt sau từ khóa switch, nhiên giá trị so sánh lại đặt sau từ khóa case Giá trị sau từ khóa case giá trị số nguyên đề cập phần trước
Nếu câu lệnh case thích hợp tức giá trị sau case với giá trị biểu thức sau switch câu lệnh liên quan đến câu lệnh case thực thi Tuy nhiên phải có câu lệnh nhảy break, goto để điều khiển nhảy qua case khác.Vì khơng có lệnh nhảy chương trình thực tất case theo sau Để dễ hiểu ta xem xét ví dụ
Ví dụ: Nhập vào số tự nhiên từ Cài đặt màu mặc định cho số thứ
(47)Kết thực chương trình
Hình 4.1 Kết chương trình lệnh switch…case 4.2 Câu lệnh for
Cú pháp:
for ([Khởi tạo]; [Điều kiện lặp]; [Bước lặp lại])
{
// Khối lệnh lặp lại Có thể bỏ trống }
Trong đó:
Các phần [Khởi tạo]; [Điều kiện lặp]; [Bước lặp lại] hồn tồn để trống ví dụ sau
Mỗi đoạn [Khởi tạo]; hay [Điều kiện lặp]; hay [Bước lặp lại] câu lệnh riêng
Tiến trình:
(48) Tiếp theo kiểm tra điều kiện lặp Rồi thực khối code bên vòng lặp for Khi đến ký hiệu } quay lên bước lặp lại
Sau lại kiểm tra điều kiện lặp tiếp tục thực đoạn code khối lệnh Đến điều kiện lặp khơng cịn thõa mãn kết thúc vịng lặp for
Trường hợp khác: for (; ;) // lưu ý dấu ; {
// Khối lệnh lặp lại Có thể bỏ trống }
Trong đó:
o Vòng lặp for trở thành vòng lặp vơ tận o Lưu ý dấu ; phải có
Ý nghĩa cách sử dụng phần [Khởi tạo]; [Điều kiện lặp]; [Bước lặp lại]
Khởi tạo
Khi bắt đầu vào đoạn code vòng lặp for, đoạn lệnh chạy Và gọi lần vòng đời vịng lặp for
(49)Hình 4.2 Màn hình để tạo Class Lập trình đoạn code Class1
Cách gọi lớp Class1 Program.cs
Ở trường hợp i gọi biến đếm (thuật ngữ lập trình dùng cho biến có tác dụng tăng giá trị lên lần lặp lại)
(50)Hình 4.3 Kết vịng lặp for khuyết
Ví dụ: Chỉ có câu lệnh khởi tạo vòng lặp (lưu ý dấu , dấu ; hai ví dụ sau)
for static void Main(string[] args) {
int i;
// lỗỗi chỉỉ phép có nhấất dịng lệnh khởỉi tạo vòng lặp for
for (i = 0, int j = 0; ; ) { Console.WriteLine(i); } Console.ReadKey(); } Hay:
static void Main(string[] args) {
int i;
// lỗỗi chỉỉ phép có nhấất dịng lệnh khởỉi tạo vòng lặp for
for (i = 0; int j = 0; ; ) {
Console.WriteLine(i); }
Console.ReadKey(); }
Điều kiện lặp
Điều kiện lặp biểu thức logic với kết trả bắt buộc true false (có thể bỏ trống trả kết true)
Điều kiện lặp dòng lệnh thứ vòng for chạy vào chạy lần (Khởi tạo chạy trước) Từ lần lặp thứ vòng for, Điều kiện lặp dòng lệnh thứ chạy (sau bước lặp lại) (Cứ nhớ đứng thứ 2)
Khi câu điều kiện lặp không cịn thỏa mãn (kết false) vịng lặp for kết thúc
Static void Main(string[] args) {
int i;
// vịng lặp for vấỗn lặp vỗ tận khỗng thoỉa mãn điềều kiện dừng
// i luỗn ==
// Điềều kiện lặp luỗn true for (i = 0; i < 10;)
{
Console.WriteLine(i); }
(51)}
Ta thấy Điều kiện lặp vịng lặp ln true, nên vịng lặp lặp vơ tận
Hình 4.4 Kết vịng lập for vô tận
Để giải vấn đề cho vòng lặp kết thúc thỏa mãn điều kiện lặp Chúng ta thêm đoạn code i++; đoạn code Console.WriteLine(i); static void Main(string[] args)
{
int i;
for (i = 0; i < 10;) {
Console.WriteLine(i); i++;
}
Console.ReadKey(); }
Kết hình xuất giá trị số nguyên từ đến (10 lần) Chứng tỏ vòng lặp kết thúc sau 10 lần lặp (khơng cịn lặp vô tận)
Lưu ý:
(52)Xem bảng thử để hiểu rõ số lần lặp:
Bảng 4.1 Mô tả số lần lặp vòng lặp for
Lần i i < 10
1 TRUE
2 TRUE
3 TRUE
4 TRUE
5 TRUE
6 TRUE
7 TRUE
8 TRUE
9 TRUE
10 TRUE
11 10 FALSE
Hồn tồn để giá trị true false vào phần điều kiện lặp (bỏ trống mặc định true) Hoặc biểu thức logic phức tạp kết cuối trả true false
Static void Main(string[] args) {
int i;
for (i = 0; (i % == 0) && (i < 10);) { Console.WriteLine(i); i++; } Console.ReadKey(); } Hay
static void Main(string[] args) {
int i;
(53)Hay
static void Main(string[] args) {
int i;
for (i = 0; true;) { Console.WriteLine(i); i++; } Console.ReadKey(); }
Bước lặp lại
Như ví dụ ta thấy Mỗi lần muốn tăng giá trị i ta phải dùng môt đoạn lệnh i++ ; cuối khối lệnh Vậy trường hợp lặp lại ta cần thực thi đoạn lệnh i++ ; sao? Để tiện cho việc code Chúng ta có phần để tìm hiểu Đó bước lặp lại
Xét đoạn code sau:
static void Main(string[] args) {
int i; for (i = 0; i < 10;) { Console.WriteLine(i); i++; } Console.ReadKey(); }
(54)Hình 4.5 Màn hình kết tăng biến i ngồi vịng lặp for
Ta viết gọn lại cách đưa i++; vào phần bước lặp lại khối for Static void Main(string[] args)
{
int i;
for (i = 0; i < 10; i++) {
Console.WriteLine(i); }
Console.ReadKey(); }
Kết tương tự bình thường
Hình 4.6 Màn hình kết tăng biến i vịng lặp for
Ví dụ Một vòng lặp for tổng hợp
static void Main(string[] args) {
int n = 100; int j = 0;
for (int i = 0; i * j < n; i++, j += 3,Console.WriteLine(“Kềất quaỉ For Loop {0}”, i))
{
Console.WriteLine(“=======================================”);
Console.WriteLine(“i: {0} | j: {1} | i * j: {2}”, i, j, i * j);
}
Console.ReadKey(); }
(55)Hình 4.7 Màn hình kết vịng lặp for tổng hợp Cũng vẽ hình chữ nhật rỗng NxM với vịng lặp for: static void Main(string[] args)
{
int N = 10; int M = 20;
char drawChar = ‘*’; char insideChar = ‘ ‘;
// Vẽ từ trền xuỗấng
for (int i = 0; i < N; i++) { // Vẽ từ trái sang
for (int j = 0; j < M; j++) {
/*
* Nềấu ởỉ tọa độ cạnh trền i % (N – 1) ==
* ởỉ cạnh trái phaỉi (j % (M – 1) == 0) * mà khỗng nằm ởỉ cạnh trền (i % (N – 1) != 0)
* ((i % (N – 1) != 0) && (j % (M – 1) == 0)) * vẽ ký tự cuỉa hình chữ nhật
* ngược lại vẽ ký tự khỗng thuộc hình chữ nhật */
if (i % (N – 1) == || ((i % (N – 1) != 0) && (j % (M – 1) == 0)))
{
Console.Write(drawChar); // lúc ký tự * }
(56)Console.Write(insideChar); // lúc ký tự rỗỗng ‘ ‘
} }
//mỗỗi lấền vẽ xong hàng xuỗấng dịng Console.WriteLine();
}
Console.ReadKey(); }
Kết chương trình
Hình 4.8 Màn hình kết vịng lặp để vẽ hình vng 4.3 Câu lệnh for …each
Cấu trúc lặp foreach cho phép duyệt mảng tập hợp Một số đặc trưng foreach:
foreach không duyệt mảng tập hợp thông qua số phần tử cấu trúc lặp for
foreach duyệt phần tử mảng tập hợp
foreach dùng để duyệt mảng tập hợp ngồi khơng thể làm khác
Cú pháp
foreach (<kiểu liệu> <tên biến tạm> in <tên mảng tập hợp>)
{
// Code xử lý }
Trong đó:
Các từ khoá foreach, in từ khoá bắt buộc
<kiểu liệu> kiểu liệu phần tử mảng tập hợp <tên biến tạm> tên biến tạm đại diện cho phần tử xét duyệt
(57) <tên mảng tập hợp> tên mảng tập hợp cần duyệt Nguyên tắc hoạt động
Foreach có nguyên tắc hoạt động tương tự cấu trúc lặp khác cụ thể sau:
Ở vòng lặp gán giá trị phần tử mảng vào biến tạm
Thực khối lệnh bên vòng lặp foreach
Qua vòng lặp thực kiểm tra xem duyệt hết mảng tập hợp chưa Nếu chưa tiếp gán giá trị phần tử vào biến tạm tiếp tục thực khối lệnh bên
Nếu duyệt qua hết phần tử vịng lặp kết thúc Qua nguyên tắc hoạt động ta thấy:
Biến tạm vòng lặp foreach tương đương với phần tử i cách duyệt vòng lặp for
Qua bước lặp ta thao tác với giá trị phần tử xét mà tương tác với phần tử đứng trước hay đứng sau Bằng cách duyệt foreach ta thay đổi giá trị phần tử
vì lúc giá trị chép biến tạm ta thao tác với biến tạm
Thậm chí việc thay đổi giá trị biến tạm không phép Nếu ta cố làm điều gặp lỗi sau:
(58)Kết chương trình
Hình 4.9 Màn hình kết vịng lặp foreach tính tổng phần tử mảng Ví dụ: Sử dụng vịng lặp foreach để in mảng liệu
Kết chạy đoạn chương trình trên:
Hình 4.10 Màn hình kết dùng vịng lặp foreach in giá trị mảng Ta thấy cách duyệt foreach ngắn gọn nhiều so với cách duyệt vòng lặp for thông thường
So sánh for foreach C#
foreach mang số ưu điểm như: Câu lệnh ngắn gọn, sử dụng
(59) Duyệt danh sách, tập hợp có số phần tử khơng xác định số phần tử thay đổi liên tục
Mặc dù có nhiều ưu điểm không foreach hẵn for Cùng điểm qua vài tiêu chí vịng lặp
Bảng 4.2 So sánh tiêu chí vịng lặp for foreach
Tiêu chí for foreach
Khả truy xuất phần tử
Truy xuất ngẫu nhiên (có thể gọi phần tử mảng để sử dụng)
Truy xuất (chỉ sử dụng giá trị phần tử xét)
Thay đổi giá trị phần tử
Có Khơng
Duyệt mảng, tập hợp khơng biết số phần tử mảng, tập hợp
Khơng Có
Hiệu suất (tốc độ xử lý) (*)
Đối với mảng, danh sách tập hợp có khả truy xuất ngẫu nhiên for chiếm ưu
Đối với mảng, danh sách tập hợp khơng có khả truy xuất ngẫu nhiên foreach chiếm ưu Câu hỏi ôn tập tập
1 Áp dụng câu lệnh switch …case để viết chương trình Console theo yêu cầu sau: khai báo biến kiểu int luachon
Nếu luachon = 1: Tính hình tam giác Nếu luachon = 2: Tính hình chữ nhật Nếu luachon = 3: Tính hình vng
2 Áp dụng lệnh for lệnh foreach để thực cơng việc sau:
- Tính tổng số từ n với n số nguyên nhập vào từ bàn
(60)- Tính tổng số chẵn số lẽ từ n với n số nguyên nhập
vào từ bàn phím
(61)BÀI 5: SỬ DỤNG CẤU TRÚC LỰA VÒNG LẶP WHILE, DO… WHILE
Mã bài: 19.05 Giới thiệu:
Trong C# vòng lặp while C# thực lặp lặp lại
lệnh mục tiêu đến điều kiện cho đúng, vòng lặp while sử dụng để lặp lặp lại đoạn code Nếu số lần lặp khơng cố định phải thực vịng lặp lần, nên sử dụng vòng lặp while
Mục tiêu:
- Trình bày thực hành sử dụng cấu trúc lệnh while - Trình bày thực hành sử dụng cấu trúc lệnh do…while
- Vận dụng cấu trúc lệnh while để viết chương trình Console bản, đồ án - Vận dụng cấu trúc do…while để viết chương trình Console bản, đồ án
- Rèn luyện tính cẩn thận, tự giác, sáng tạo, làm việc nhóm Nội dung chính:
5.1 Sử dụng cấu trúc vòng lặp While
while (<Điều kiện lặp>) {
// khối lệnh lặp lại }
Điều kiện lặp biểu thức logic bắt buộc phải có với kết trả bắt buộc true false
Từ khóa while biểu thị vòng lặp while Các câu lệnh khối lệnh lặp lại đến khơng cịn thỏa mãn điều kiện lặp kết thúc vòng lặp while
Tiến trình:
(62)thực khối code Khi gặp ký tự } quay lên kiểm tra điều kiện lặp tiếp tục thực khối code Quá trình kết thúc điều kiện lặp false
Điều kiện lặp true vịng lặp while trở thành vịng lặp vơ tận
Điều kiện lặp ln false vịng lặp khơng thực thi Ví dụ 1: In dãy số từ 10 19
Kết chương trình:
Hình 5.1 Kết thực vịng lặp while in dãy số từ 10 19
(63)Dùng vòng lặp while để thực vẽ hình chữ nhật có chiều dài 50 dấu “*” chiều rộng 20 dấu “*” liên tiếp
Kết chương trình
(64)5.2 Sử dụng cấu trúc vòng lặp …while Cú pháp
do {
// khối lệnh lặp lai } while (<Điều kiện lặp>);
Điều kiện lặp biểu thức logic bắt buộc phải có với kết trả bắt buộc true false
Từ khóa while biểu thị vòng lặp while Các câu lệnh khối lệnh lặp lại đến khơng cịn thỏa mãn điều kiện lặp kết thúc vòng lặp while
Tiến trình:
Đầu tiên trình biên dịch vào dòng thực khối lệnh bên Sau gặp ký tự } kiểm tra điều kiện lặp có thỏa mãn hay khơng Nếu kết true quay lại ký tự { thực khối code Quá trình kết thúc điều kiện lặp false
Điều kiện lặp ln true vịng lặp do…while trở thành vịng lặp vơ tận
Điều kiện lặp ln false vịng lặp khơng thực thi
Lưu ý: vòng lặp … while thực câu lệnh khối code xong kiểm tra điều kiện lặp Cuối vòng lặp while có dấu ; cuối
Ví dụ 1:
Dùng vòng lặp do…while để in dãy số từ 10 19
(65)Kết thực chương trình:
Hình 5.2 Kết thực vòng lặp do…while in dãy số từ 10 19
(66)Kết thực chương trình:
Hình 5.4 Kết thực vịng lặp do…while in ma trận Câu hỏi ôn tập tập
Áp dụng lệnh while, … while để thực cơng việc sau:
- Tính tổng số từ n với n số nguyên nhập vào từ bàn
phím
- Tính tổng số chẵn số lẽ từ n với n số nguyên nhập
vào từ bàn phím
(67)BÀI 6: SỬ DỤNG CÂU LỆNH BREAK, CONTINUE, GOTO
Mã bài: 19.06 Giới thiệu:
Các câu lệnh làm ngắt, tiếp tục vị trí bất kỳ, nhảy đến vị trí Các câu lệnh làm gãy bố cục chương trình giúp cho chương trình thực yêu cầu vài trường hợp cụ thể
Mục tiêu:
- Trình bày thực hành sử dụng câu lệnh continue, goto, break - Vận dụng câu lệnh break, continue, goto để viết chương trình Console bản, đồ án
- Rèn luyện tính cẩn thận, tự giác, sáng tạo, làm việc nhóm Nội dung chính:
6.1 Sử dụng câu lệnh break
Lệnh break C# có hai cách sử dụng:
Khi lệnh break sử dụng vòng lặp, vòng lặp kết thúc điều khiển chương trình bắt đầu lệnh sau vịng lặp
Nó sử dụng lệnh switch (sẽ nhắc đến chương tới) Nếu sử dụng vịng lặp lồng (ví dụ, vòng lặp bên vòng lặp khác), lệnh break dừng thực thi lệnh vòng lặp bắt đầu thực thi lệnh đoạn code sau khối code
Cú pháp lệnh break C# sau:
(68)Ví dụ:
Kết chương trình:
Hình 6.1 Kết lệnh break 6.2 Sử dụng câu lệnh continue
Lệnh continue C# làm việc giống với lệnh break Thay bắt buộc kết thúc, bắt buộc vịng lặp diễn ra, bỏ qua đoạn code
Với vòng lặp for, lệnh continue làm cho bước kiểm tra điều kiện phần increment vòng lặp thực thi Với while do…while, lệnh continue làm điều khiển chương trình chuyển tới kiểm tra điều kiện
Cú pháp lệnh continue C# sau:
(69)Ví dụ:
Kết chương trình:
Hình 6.2 Kết thực lệnh continue 6.3 Sử dụng câu lệnh goto
Lệnh nhảy goto lệnh nhảy đơn giản, cho phép chương trình nhảy vơ điều kiện tới vị trí chương trình thơng qua tên nhãn Tuy nhiên việc sử dụng lệnh goto thường làm tính cấu trúc thuật tốn, việc lạm dụng dẫn đến chương trình nguồn mà giới lập trình gọi “mì ăn liền” rối mớ bịng bong Hầu hết người lập trình có kinh nghiệm tránh dùng lệnh goto Sau cách sử dụng lệnh nhảy goto:
Cú pháp:
goto <label>;
(70) goto từ khóa thơng báo cho trình biên dịch biết đến nhãn sau để tiếp tục thực thi code
Ví dụ
Kết chương trình
(71)Kết chương trình
Hình 6.4 Kết thực vịng lặp vơ tận Câu hỏi ôn tập tập
1 Sử dụng câu lệnh break cho tập 5.1
2 Viết chương trình đặt nhãn thực in câu lệnh “Chúc bạn học tốt môn học”
(72)BÀI 7: HÀM
Mã bài: 19.07 Giới thiệu:
Hàm chương trình sử dụng thường xun tồn q trình lập trình Việc viết sử dụng hàm cách hiệu giúp cho q trình thực cơng việc lập trình nhanh chóng, tái sử dụng, kế thừa tốt Mục tiêu:
- Trình bày khái niệm cơng dụng hàm xây dựng chương trình
- Quy tắc xây dựng hàm, sử dụng hàm xây dựng chương trình - Trình bày sử dụng tham số, tham trị hàm
- Vận dụng hàm, thủ tục để xây dụng chương trình đồ án khoa học hiệu
- Rèn luyện tính cẩn thận, tự giác, sáng tạo, làm việc nhóm Nội dung chính:
7.1 Khái niệm
Khi muốn thực thi đoạn code nhiều lần, thay phải copy copy lại đoạn code nhiều lần, dẫn đến chương trình bị trùng lặp code nhiều, C# có function cho phép thực thi đoạn code nhiều lần mà không cần phải copy lại code, mà cần gọi tên hàm
Việc viết sử dụng hàm cách hiệu hỗ trợ nhiều trình thực hành
7.2 Quy tắc xây dựng hàm Cú pháp:
<Quyền truy cập> <Kiểu trả về> Tên hàm (<Tham số>) {
// Thân hàm
(73)Trong đó: Tên hàm:
o Là tên gọi hàm
o Tên đặt tùy ý nên đặt tên theo quy tắc đặt tên để có
đồng ngầm định lập trình viên dễ tìm, dễ nhớ (
o Hãy xem cách khởi tạo hàm giống khởi tạo biến chỗ Đều
cần kiểu liệu tên Có thể có từ khóa Tên để tái sử dụng hàm nơi mong muốn
Kiểu trả về: từ khóa void, hay kiểu liệu int, long, bool, SinhVien… Thân hàm: Nó khối lệnh thực thi hàm gọi
Quyền truy cập: Nó sử dụng để xác định khả truy cập hàm ứng dụng bao gồm quyền sau: public, private, protected
Tham số: Nó danh sách tham số mà truyền vào gọi hàm Lưu ý:
o Mọi hàm phải có cặp ngoặc nhọn { } biểu thị khối lệnh
Mọi dòng code xử lý hàm viết bên cặp ngoặc nhọn { }
o Không thể khai báo hàm hàm khác theo cách thông
thường
Một hàm hay thấy với cấu trúc bắt buộc phải có lập trình C# console hàm Main
7.3 Nguyên tắc hoạt động hàm
Hàm void hàm có kiểu trả void Chúng ta xem qua khai báo hàm sau:
void Demo() {
// some code return;
(74)Vì hàm void (hàm có kiểu trả void) khơng cần viết return; nên bỏ return;
void Demo() {
// some code }
Một lưu ý sau: viết code console C# Bắt buộc phải có hàm Main Nhưng hàm Main lại có từ khóa static Nên để hàm Main sử dụng hàm mà ta viết hàm phải có từ khóa static Static void Main(string[] args)
{
// Gọi lại hàm đềỉ sưỉ dụng
Console.OutputEncoding = Encoding.UTF8; Demo();
Console.ReadKey(); }
static void Demo() {
Console.WriteLine(“Chào mừng đềấn với mỗn Lập trình Windows Forms”);
}
Kết xuất dòng chữ “Chào mừng đến với mơn Lập trình Windows Forms” viết bên hàm Main Nhưng thật gọi từ hàm Demo
Khi sử dụng hàm ta gọi lại tên hàm kèm theo dấu () biểu thị hàm Sau có parameter thêm giá trị vào bên dấu ()
Chúng ta gọi lại nhiều lần thấy code viết rõ ràng dễ tái sử dụng
static void Main(string[] args) {
// Gọi lại hàm nhiềều lấền
// dòng chữ Called from Demo! HowKteam.com in nhiềều lấền
Console.OutputEncoding = Encoding.UTF8; Demo(); Demo(); Demo(); Demo(); Console.ReadKey(); }
static void Demo() {
Console.WriteLine(“Chào mừng đềấn với mỗn Lập trình Windows Forms”);
(75)Nhiều dịng chữ “Chào mừng đến với mơn Lập trình Windows Forms” in hình
Hàm có kiểu trả khác void
Với hàm có kiểu trả khác void Trong thân hàm bắt buộc phải có dịng return <Giá trị trả về>;
Giá trị trả phải có kiểu liệu tương ứng với Kiểu liệu trả khai báo hàm
/// <summary>
/// Hàm traỉ vềề giá trị sỗấ nguyền thỗng qua tền hàm
/// Lưu ý giá trị traỉ vềề phaỉi kiềỉu liệu với kiềỉu traỉ vềề cuỉa hàm
/// Ởỉ kiềỉu int /// </summary>
/// <returns></returns> static int ReturnANumber() {
// bắất buộc phaỉi có cấấu trúc return thấn hàm return 5;
}
Có thể sử dụng hàm bình thường, có thêm lợi lấy giá trị trả hàm thông qua lời gọi tên hàm
Static void Main(string[] args) {
Console.WriteLine(ReturnANumber()); Console.ReadKey();
} /// <summary>
/// Hàm traỉ vềề giá trị sỗấ nguyền thỗng qua tền hàm
/// Lưu ý giá trị traỉ vềề phaỉi kiềỉu liệu với kiềỉu traỉ vềề cuỉa hàm
/// Ởỉ kiềỉu int /// </summary>
/// <returns></returns> static int ReturnANumber() {
// bắất buộc phaỉi có cấấu trúc return thấn hàm return 5;
}
Kết số xuất hình 7.4 Cách truyền tham số
(76)Kết chương trình
(77)Kết chương trình
Hình 7.2 Kết hàm trả giá trị 7.5 Sử dụng hàm
Trong c# có cách gọi hàm gọi giá trị (call by value), gọi tham chiếu (call by Reference) dùng tham số out
7.5.1 Gọi giá trị (call by value)
Trong C#, gọi giá trị tức tham số truyền vào giá trị gốc, bên thân hàm có thay đổi giá trị tham số truyền vào sau kết thúc gọi hàm giá trị gốc khơng thay đổi
Ví dụ:
Kết chương trình
Hình 7.3 Kết gọi hàm giá trị 7.5.2 Gọi tham chiếu (call by Reference)
(78)Hình 7.4 Kết gọi hàm tham chiếu 7.5.3 Tham số out
Tham số out giống kiểu tham chiếu, ngoại trừ việc khơng yêu cầu biến khởi tạo trước truyền
(79)Kết chương trình
Hình 7.5 Kết gọi hàm tham số out Như cần phân biệt ref out sau:
Bảng 7.1 Phân biệt giữ ref out
ref out
Giá trị phải khởi tạo trước Giá trị không khởi tạo trước bên thân hàm khơng đọc nó gán giá trị Bên thân hàm đọc vào
thay đổi giá trị
Hàm phải gán giá trị cho biến out trước trả giá trị
Câu hỏi ôn tập tập
(80)BÀI 8: THIẾT KẾ LỚP ĐỐI TƯỢNG
Mã bài: 19.08 Giới thiệu:
Lớp đối tượng dùng để lưu trữ danh sách thuộc tính phương thức đối tượng phân biệt dự án lập trình
Mục tiêu:
- Lập danh sách lớp đối tượng ứng với chương trình cụ thể - Thiết kế lớp đối tượng cho tập nhóm
- Rèn luyện tính cẩn thận, tự giác, sáng tạo, làm việc nhóm Nội dung chính:
8.1 Định nghĩa lớp đối tượng
Lập trình hướng đối tượng (Object-oriented programming – OOP), kỹ thuật lập trình mà điều cốt yếu cần trừu tượng hóa vấn đề thành đối tượng (đối tượng có liệu ứng xử) Kỹ thuật OOP có tính chất
Tính trừu tượng (abstraction) mơ tả cách tổng qt hóa mà không chi tiết thông tin (triển khai với interface, abstract)
Tính đóng gói (encapsulation) liệu đối tượng cố gắng nằm trong hộp đen, thành phần khác bên ngồi đối tượng khơng trực tiếp tác động đến liệu
Tính đa hình (polymorphism) đối tượng ứng xử khác tùy trường hợp cụ thể
Tính kế thừa (inheritance) đặc tính lớp kế thừa từ lớp khác Trong lập trình hướng đối tượng, lớp (class) kiểu liệu định nghĩa tập hợp biến (thuộc tính) phương thức (gọi chúng member – thành viên lớp) Từ lớp sinh đối tượng (object), đối tượng gọi instance of a class (bản triển khai class), đối tượng có giá trị liệu cụ thể (lưu thành viên biến) Các phương thức (method) – định nghĩa ứng xử đối tượng – dựa theo liệu chúng
(81)Một thực thể có trạng thái hành vi gọi đối tượng Ví dụ máy pha cà phê, xe đạp, xe máy, quạt
Một đối tượng có ba đặc điểm:
Trạng thái: Đại diện cho liệu (giá trị) đối tượng
Hành vi: Đại diện cho hành vi (chức năng) đối tượng gửi tiền, rút tiền,
Danh tính: Danh tính đối tượng thường cài đặt thông qua ID ID ẩn user bên Tuy nhiên sử dụng nội máy ảo JVM để định danh đối tượng Ví dụ: Bút chì đối tượng Tên A, màu trắng, gọi trạng thái Nó sử dụng để viết, viết gọi hành vi
Đối tượng(Object) thể lớp(Class) Lớp mẫu hoặc thiết kế từ đối tượng tạo Vì vậy, đối tượng thể (kết quả) lớp
Ví dụ: Một lớp mô tả chung nhân viên, đặt tên nhanvien, bên nó định nghĩa thành viên liệu (biến) như: manv, tennv, ngaysinh, gioitinh Cũng định nghĩa thành viên hàm (phương thức) để mơ tả ứng xử như: khoitao(), them()
Khi có định nghĩa lớp nhanvien, tạo đối tượng cụ thể mà
đối tượng có liệu khác Nhân viên A, Nhân viên B
8.2 Khai báo lớp đối tượng
(82)Hình 8.1 Màn hình để chọn thêm lớp vào Project
Hình 8.2 Màn hình đặt tên cho lớp đối tượng
(83)Cú pháp, ví dụ khai báo lớp
Khi giải vấn đề thực tiễn, vấn đề cần giải cần tìm cách trừu tượng hóa thành vấn đề tổng qt, có đặc tính gì, ứng xử Từ định nghĩa lớp để thực hóa vấn đề trừu tượng
Cú pháp sau:
<Access Modifiers> class Class_Name
{
// khai báo thành viền liệu (thuộc tính – biềấn)
// khai báo thành viền hàm (phưởng thức)
}
Trong Access Modifiers từ khóa sau:
Bảng 8.1 Bảng mơ tả từ khóa định nghĩa lớp
Từ khóa Giải thích
Public Truy xuất nơi
Protected Truy xuất nội lớp lớp Internal Truy xuất nội chương trình (Assembly) protected internal Truy xuất nội chương trình (assembly)
trong lớp
private (mặc định) Chỉ truy xuất nội lớp
Ví dụ: Khai báo lớp có tên Box gồm thuộc tính: chiều dài, chiều rộng, chiều cao
(84)Câu hỏi ôn tập tập
1 Tạo lớp đối tượng sinh viên bao gồm thông tin: masv (mã sinh viên), tennv (tên sinh viên), ngaysinh (ngày sinh), diachi (địa chỉ)
(85)BÀI : ĐỊNH NGHĨA CÁC THUỘC TÍNH, PHƯƠNG THỨC HÀNH ĐỘNG CHO LỚP ĐỐI TƯỢNG
Mã bài: 19.09 Giới thiệu:
Việc xác định thuộc tính lớp đối tượng chuẩn bị sẵn phương thức hoạt động cho lớp đối tượng giúp cho việc sử dụng lập trình dễ dàng nhiều
Mục tiêu:
- Định nghĩa thuộc tính cho lớp đối tượng
- Định nghĩa phương thức hành động cho lớp đối tượng - Vận dụng thuộc tính, phương thức lớp đối tượng đồ án - Rèn luyện tính cẩn thận, tự giác, sáng tạo, làm việc nhóm
Nội dung chính:
9.1 Định nghĩa thuộc tính cho lớp đối tượng Ví dụ:
- Định nghĩa lớp đối tượng Box gồm thuộc tính chieudai, chieurong, chieucao
(86)(87)Trong hình lập trình để khai báo sử dụng lớp đối tượng Box chương trình Main ta sử dụng câu lệnh sau:
Từ khóa this
Từ khóa this dùng phương thức lớp, tham chiếu đến đối tượng sinh từ lớp Sử dụng this để tường minh, tránh không rõ ràng truy cập thuộc tính, phương thức để lấy đối tượng lớp làm tham số cho thành phần khác
Ví dụ, hàm setchieucao, viết: public void setchieucao(int chieucao) {
this.chieucao = chieucao ; }
Nếu viết thiếu this chieucao = chieucao , làm cho khó hiểu khơng biết gán chieucao từ tham số hàm cho chieucao liệu lớp
9.2 Định nghĩa phương thức hành động cho lớp đối tượng Phương thức khởi tạo – Constructor
Phương thức khởi tạo phương thức lớp, thi hành đối tượng tạo (bởi toán tử new), phương thức khởi tạo có tên trùng với tên lớp, khơng có kiểu trả
(88)Nếu khai báo vào khởi tạo giống chương trình báo lỗi tạo đối tượng Box cần gán giá trị ban đầu cho đối tượng: chiều dài, chiều rộng, chiều cao
Lúc sử sau:
Kết tương tự ví dụ trên, việc sử dụng hàm khởi tạo đảm bảo liệu đối tượng bắt buộc phải khởi tạo đối tượng tạo – tránh việc sử dụng đối tượng mà liệu khơng xác
Phương thức Destructor C#
Một destructor C#, hàm thành viên đặc biệt lớp, thực thi đối tượng lớp khởi phạm vi
Một destructor có tên giống tên lớp với ngã (~) trước có thể: khơng trả giá trị không nhận tham số
Destructor C# hữu ích để giải phóng tài ngun nhớ trước khỏi chương trình Destructor khơng thể bị kế thừa nạp chồng
(89)Chương trình viết Program.cs
Kết thực chương trình
(90)Kỹ thuật tải phương thức (Method Overloading) cách thức triển khai khái niệm tính đa hình lập trình hướng đối tượng Q tải phương thức phương thức có tên tham số khác (hàm trả kiểu liệu khác nhau)
Tính đa hình (polymorphism) cách ứng xử đối tượng - ứng xử là khác tùy thuộc vào tình cụ thể
Public static void WriteLine();
public static void WriteLine(bool value); public static void WriteLine(decimal value); public static void WriteLine(int value);
Điều giúp cho gọi Console.Writeline(a), tùy thuộc vào kiểu liệu a mà hàm WriteLine tương ứng thi hành
Ví dụ:
public class OverloadingExample
{
public static int Sum(int a, int b) {
return a + b; }
public static double Sum(double a, double b) {
return a + b; }
}
Lớp có hàm Sum tải, tùy thuộc vào kiểu tham số mà hàm Sum cụ thể gọi
double a = 1; double b = 2;
var c = OverloadingExample.Sum(a, b); // c = có kiềỉu double
int a = 1;
int b = 2;
var c = OverloadingExample.Sum(a, b); // c = có kiềỉu int
Chú ý: Khai báo hai hàm tên, giống hoàn toàn tham số chỉ khác kiểu trả gây lỗi.
Tính đóng gói lập trình hướng đối tượng
(91)C# triển khai tính đóng gói sử dụng Access Modifiers: public private protected internal khai báo lớp, phương thức, thuộc tính, trường liệu (biến)
Ví dụ:
class Student
{
private string Name; }
Khi sử dụng
var s = new Student(); s.Name = “ABC”;
Biên dịch lỗi error CS0122: ‘Student.Name’ is inaccessible due to its protection level Vì trường Name private khơng thể truy cập code bên lớp Nhưng thay public khơng lỗi
Khi lập trình cố gắng tối đa ẩn thơng tin bên lớp nhiều tốt để đảm bảo tính đóng gói kỹ thuật lập trình OOP, giúp cho code dễ bảo trì giám sát lỗi
Câu hỏi ôn tập tập
1 Lớp đối tượng sinh viên bao gồm thông tin: masv (mã sinh viên), tennv (tên sinh viên), ngaysinh (ngày sinh), diachi (địa chỉ), diemtoan (điểm toán), diemvan (điểm văn) Viết phương thức phù hợp cho lớp để gán thơng tin, tính điểm trung bình
2 Lớp đối tượng đồng hồ bao gồm thông tin: thoigian, gio, phut, giay Viết phương thức đổi giây liệu nhập vào
(92)BÀI 10: SỬ DỤNG FORM, MENUSTRIP
Mã bài: 19.10 Giới thiệu:
Form Menustrip đối tượng cần thiết lập trình ứng dụng Windows Forms Bản thân Form tạo chương trình chạy, Menustrip điều khiển có mặt hầu hết chương trình ứng dụng thực tế
Mục tiêu:
- Trình bày vận dụng Form cho đồ án - Trình bày vận dụng MenuStrip cho đồ án
- Rèn luyện tính cẩn thận, tự giác, sáng tạo, làm việc nhóm Nội dung chính:
10.1 Form
Form : đối tượng cửa sổ chương trình chứa đối tượng khác
(93)Hình 10.2 Màn hình lựa chọn tạo project
Hình 10.3 Màn hình quản lý điều khiển Form Chọn nơi lưu
Chọn ứng dụng Windows Forms Chọn ngơn ngữ
Thuộc tích điều khiển
Quản lý dự án
(94)Để ẩn/hiện đối tượng hình làm việc vào View ToolBox/
Properties/…
Hình 10.4 Lựa chọn hiển thị cho cửa sổ
Danh mục điều khiển
(95)10.2 Thuộc tính Form
Bảng 10.1 Bảng mơ tả thuộc tính Form
Thuộc tính Mơ tả
Name Đặt tên form
AcceptButton
Giá trị thuộc tính nhận tên button form Khi thay nhấp chuột vào button để thực thi người dùng ấn phím Enter bàn phím
Backcolor Thiết lập màu form
BackgroundImage Thiết lập hình cho form
BackgroundImageLayou t
Thiết lập việc hiển thị hình vừa thêm thuộc tính BackgroundImage hiển thị form dạng: bình thường (None), (Center), …
CancelButton
Giá trị thuộc tính nhận tên button form Khi thay nhấp chuột vào button để thực thi người dùng ấn phím Escape bàn phím
ControlBox
Mang giá trị true false Nếu thiết lập thuộc tính false loại bỏ nút minimize nút maximize form
Cusor Thiết lập hình dạng trỏ di chuyển
con trỏ vào form
Enable
Mang giá trị true false; Nếu thiết lập thuộc tính false điều khiển form không cho phép người dùng thao tác
Font Thiết lập văn hiển thị điều khiển
ForeColor Thiết lập màu mặc định cho chuỗi
điều khiển form
FormBorderStyle Thiết lập đường viền form hành vi
của form chạy chương trình
HelpButton
Mang giá trị true false; Nếu thiết lập thuộc tính true titlebar nút có dấu ? (nút hai thuộc tính
MinimizeBox
MaximizeBox thiết lập false)
(96)titlebar form
KeyReview
Mang giá trị true false: thiết lập thuộc tính true cho phép kiện bàn phím form có hiệu lực
Location
Khi thuộc tính StartPosition thiết lập Manual, thuộc tính Location có tác dụng thiết lập vị trí hiển thị form hình
MaximizeBox
Mang giá trị true false: thiết lập thuộc tính false nút maximize form titlebar
MaximumSize Thiết lập kích thước lớn form
(chiều rộng x chiều cao)
MinimizeBox
Mang giá trị true false: thiết lập thuộc tính false nút minimize form titlebar
MinimumSize Thiết lập kích thước nhỏ form
(chiều rộng x chiều cao)
Opacity Thiết lập độ suốt cho form
Size Kích thước form
StartPosition Vị trí hiển thị form hình
Text Chuỗi văn hiển thị Titlebar
Form
Visible
Mang giá trị true false: thiết lập thuộc tính True form hiển thị hình, False khơng hiển thị hình
WindowState
Có giá trị: Normal: hiển thị form bình thường; Minimized: chạy chương trình form bị thu nhỏ taskbar; Maximized: form hiển thị có kích thước đầy hình
IsMDIContainer
Mang giá trị True False
- Nếu True: Form dạng MDI Form - Nếu False: Form dạng bình thường
MdiParent
Cài đặt giá trị đối tượng MDI Form Khi thiết lập giá trị cho thuộc tính MdiParent form trở thành Child Form
Bảng 10.2 Bảng mô tả giá trị FormStartPosition
(97)Manual
Nếu StartPosition mang giá trị Manual vị trí form hiển thị vị trí thiết lập thuộc tính Size.
CenterScreen Form hiển hình WindowsDefaultLocatio
n
Form hiển thị vị trí mặc định với kích thước form kích thước form thiết lập thuộc
tính Size
WindowsDefaultBounds Form hiển thị vị trí mặc định với kích thước form kích thước mặc định
CenterParent Form hiển thị vị trí form cha Hiển thị Form1 vị trí hình
Form1.StartPosition =
FormStartPosition.WindowsDefaultLocation;
Hình 10.6 Màn hình lập trình để cài đặt Form chạy đầu tiên
Dòng lệnh form hiển thị form1 Do đó, lập trình viên cần sữa lại mã lệnh định form khác muốn hiển thị cách thay tên form cho form1
Ví dụ : Hiển thị form có tên Form2 dự án
Application.Run(new Form2());
Ví dụ 2: Viết chương trình hiển thị form cho kiện Form_load(): Nhập tên Form để chạy
Thay đổi tên form để chạy form
(98)Nhấn Ctrl + Shift + B để biên dịch mã nguồn nhấn F5 để thực thi chương trình Mdi Form Child Form
Kết chương trình
Hình 10.7 Kết chương trình form cha – con
(99)Kết chương trình
Hình 10.8 Kết chương trình form dạng hình ellipse b Sự kiện Form
Sự kiện form hay gọi hành động liên quan đến form Ứng dụng Windows Forms hỗ trợ nhiều kiện đoạn mã tạo kiện sinh cách tự động Để sử dụng kiện form cần thực thao tác sau:
Bước 1: Nhấp chuột trái vào form
Bước 2: Trên cửa sổ Properties tương ứng, nhấp chuột trái vào biểu tượng để mở hộp thoại kiện
(100)(101)Bảng 10.3 Bảng mô tả kiện form
Sự kiện Mô tả
AutoSizeChanged Xảy thuộc tính Autosize Form chuyển từ True sang False hay ngược lại False sang True
BackColorChange
d Xảy thuộc tính BackColor Form thay đổi Click Xảy người dùng Click chuột vào vùng làm
việc thuộc Form
ControlAdded Xảy điều khiển Add vào Form ControlRemoved Xảy điều khiển bị xóa khỏi Form CursorChanged Xảy thuộc tính Cursor Form thay đổi
DoubleClick Xảy người dùng DoubleClick vào vùng làm việc Form
FontChanged Xảy thuộc tính Font Form có thay đổi ForeColorChanged Xảy thuộc tính ForeColor Form có thay
đổi
FormClosed Xảy Form đóng (Nhấn vào nút X màu đỏ titlebar)
FormClosing
Xảy Form đóng (2 kiện FormClosed FormClosing thường dùng lập trình CSDL: xảy kiện đóng kết nối CSDL)
KeyDown Xảy người dùng nhấn phím hay tố hợp phím
KeyPress Xảy người dùng nhấn phím KeyUp Xảy người dùng nhả phím
MouseClick Xảy người dùng nhấn chuột (một lựa chọn: Trái, giữa, phải)
MouseDoubleClick
Xảy người dùng nhấp đúp chuột vào vùng làm việc Form (một lựa chọn: Trái, giữa, phải)
MouseDown Xảy người dùng nhấn chuột
MouseHover Xảy người dùng di chuyển vào vùng làm việc Form
MouseLeave Xảy di chuyển chuột khỏi vùng làm việc Form
(102)xảy kiện MouseMove Form)
MouseUp Xảy người dùng nhả nhấn chuột (có thể chuột trái, chuột phải, chuột – chuột cuộn)
Move Xảy di chuyển Form (có thay đổi vị trí Form)
StyleChanged Xảy thuộc tính FormBorderStyle Form thay đổi
TextChanged Xảy thuộc tính Text Form thay đổi Sự kiện FormClosed: Sự kiện gọi Form đóng
Sự kiện FormClosing: Sự kiện gọi Form đóng
Sự kiện KeyPress: Xảy ấn phím, khơng rõ phím nhấn nhấn phím kiện KeyPress form xảy
Sự kiện KeyDown:
(103)10.2 Menustrip
Điều khiển MenuStrip cho phép lập trình viên xây dựng hệ thống menu
form Menu xây dựng dạng cấp nhiều cấp Ví dụ menu Notepad hình 10.10 MenuStrip cho phép xây dụng menu với điều khiển:
ToolStripSeparator
ToolStripMenuItem (Menu con)
ToolStripCombobox (Combobox)
ToolStripTextbox (Textbox)
(104)MenuStrip đặt nhóm Menus & Toolbars cửa sổ Toolbox
Hình 10.11 Hiển thị điều khiển MenuStrip ToolBox Một số thuộc tính thường dùng MenuStrip:
Bảng 10.4 Bảng mơ tả thuộc tính MenuStrip Thuộc tính Mơ tả
TextDirection
TextDirection Chọn hình thức trình bày menu - Hình thức Horizontal:
- Hình thức Vertical 90: - Hình thức Vertical 270:
Items
Thêm menu Kiểu menu chọn dạng: MenuItem, ComboBox, Separator, TextBox
Dạng MenuItem (menu con): Dạng Combobox:
Dạng TextBox:
Separator (Gạch phân cách):
RightToLeft Mang giá trị Yes No
Nếu Yes trình bày menu từ phải qua trái:
Bảng 10.5 Bảng mô tả thuộc tính thường dùng MenuItem Thuộc tính Mô tả
Checked
Mang giá trị True False
- Nếu True: Hiện biểu tượng CheckBox bên cạnh chuỗi Text
Nếu False: Không biểu tượng CheckBox
CheckOnClick
Mang giá trị True False
- Nếu True: Biểu tượng CheckBox xuất bên cạnh chuỗi Text menu người dùng nhấp
chuột chọn
- Nếu False: Thao tác nhấp chuột người dùng khơng ảnh hưởng đến việc hiển thị hay không hiển thị biểu tượng CheckBox
CheckState Cho biết trạng thái CheckBox menu
(105)Lưu ý: Trạng thái Indeterminate có hiệu lực thuộc tính Checked True
DisplayStyle
Hình thức trình bày menu Có kiểu hiển thị: - None: Khơng hiển thị menu
- Text: Cho phép hiển thị chuỗi mô tả
- Image: Cho phép hiển thị hình biểu tượng bên cạnh Text
- ImageAndText: Cho phép hiển thị hình (biểu tượng) chuỗi mơ tả
Image Hình ảnh xuất bên cạnh chuỗi Text
ImageScaling
Kiểu trình bày hình thuộc tính Image Có thể thiết lập hai giá trị:
- None: Hiển thị bình thường
- SizeToFit: Hiển thị kích cỡ hình biểu tượng
ShorcutKeys Tổ hợp phím tắt ứng với menu
ShowShortcutKey s
Mang giá trị True hoặc False:
- Nếu True: Cho phép hiễn thị giá trị thuộc tính
ShortcutKeyDisplayString
- Nếu False: giá trị thuộc tính
ShortcutKeyDisplayString sẽ khơng hiển thị
Text Chuỗi ký tự hiển thị menu
TooltipText Chuỗi ký tự hiển thị rê chuột vào menu
Bảng 10.6 Bảng mô tả kiện thường dùng MenuItem
(106)Menu dạng Separator: Menu dạng đơn đường kẻ ngang giúp ngăn cách menu với nhau, giúp hệ thống menu hiển thị cách rõ ràng
- Menu dạng ComboBox: Các thuộc tính, phương thức kiện giống với điều khiển ComboxBox
- Menu dạng TextBox: Các thuộc tính, phương thức kiện giống với điều khiển TextBox
Câu hỏi ôn tập tập
1 Trong dòng mã lệnh sau đây, mã lệnh cho phép tạo hiển thị đối
tượng Windows Form có tên Form1 a) Form1 frm = new Form1;
frm.Show();
b) Form Form1 = new Form(); Form1.Show();
c) Form1 frm ; frm.Show(); d) Form frm; frm.Show();
e) Form Form1 = new Form(); Form1.ShowDialog();
2 Trong thuộc tính sau, thuộc tính dùng để thiết lập nội dung hiển thị title bar thuộc tính dùng để thiết lập màu form
a) Thuộc tính Text ForeColor b) Thuộc tính Display BackColor c) Thuộc tính Text BackColor
private void Form1_Click(object sender, EventArgs e) {
(107)Form Form2 = new Form();//Thiết lập tiêu đề titlebar form
Form2.Text = “Giao diện Form 2”; //Thiết lập vị trí hiển thị form
Form2.StartPosition = FormStartPosition.CenterScreen; //Thiết lập màu cho form
Form2.BackColor = Color.CadetBlue;
//Kiểm tra giá trị trả phương thức ShowDialog()
//nếu giá trị trả DialogResult.Cancel Form2 //đã đóng, tiến hành đóng Form1 phương thức
//Close()
if (Form2.ShowDialog() == DialogResult.Cancel) {
this.Close(); }
}
d) Thuộc tính Display ForeColor
3 Các thuộc tính sau, thuộc tính cho phép thiết lập form trở thành MdiForm
a) IsMdiContainer b) MdiParent c) MdiContainer d) ParentForm
4 Các thuộc tính sau, thuộc tính cho phép thiết lập form trở thành Child Form
a) IsMdiContainer b) MdiParent c) MdiContainer d) ParentForm
(108)a) FormClosed b) FormClosing c) ClosedForm d) ClosingForm e) Load
f) Click
6 Xây dựng form có dạng hình tam giác hình 2.21
Hình 10.12 Thiết kế form dạng tam giác Thiết kế giao diện chương trình hiển thị thời gian sau:
Hình 10.12 Thiết kế form hiển thị MenuStrip Yêu cầu:
Menu Chức năng: Gồm có chức mục Thoát dạng MenuItem Khi người dùng nhấn chuột trái vào Thốt nhấn tổ hợp phím Ctrl + T chương trình
Menu Nội dung hiển thị: Dạng ComboBox ComboBox chứa hai mục chọn: Hiển thị thời gian: Giúp hiển thị phút giây label lblHienThi Hiển thị ngày tháng: Giúp hiển thị ngày tháng năm label lblHienThi
(109)BÀI 11: SỬ DỤNG LABEL, TEXTBOX, BUTTON
Mã bài: 19.11 Giới thiệu:
Các điều khiển để hiển thị văn (Label), cho phép nhập liệu (Textbox) sử dụng nút lệnh để thực thao tác khơng thể thiếu q trình thiết kế Form
Mục tiêu:
- Trình bày vận dụng Button cho đồ án - Trình bày vận dụng Label cho đồ án - Trình bày vận dụng TextBox cho đồ án
- Rèn luyện tính cẩn thận, tự giác, sáng tạo, làm việc nhóm Nội dung chính:
11.1 Label
Label thường dùng hiển thị thông tin đọc thường sử dụng kèm với điều khiển khác để mô tả chức Labelđược đặt nhóm Common Controls cửa số Toolbox
(110)Một số thuộc tính thường dùng Label:
Bảng 11.1 Bảng mô tả thuộc tính Label
Thuộc tính Mơ tả
BorderStyle Thiết lập đường viền
Font Kích thước kiểu chữ hiển thị Label
Text Nội dung hiển thị Label
Backcolor Màu Label
Name Tên Label
Locked Khóa khơng cho di chuyển
Enabled Đánh dấu tích đối tượng trạng thái hoạt động
Cursor Đổi hình trỏ chuột đưa vào Label
ForeColor Thiết lập màu chữ hiển thị Label
TextAlign Căn lề chữ hiển thị Label
(111)Ví dụ: Thiết kế form hiển thị thơng tin sinh viên
Hình 11.2 Form hiển thị thơng tin sinh viên Thực chương trình:
Bước 1: Tạo Form có thuộc tính Text = “Giao diện Form 1” Bước 2: Kéo tất Label vào
Bước 3: Áp dụng thuộc tính Text, Font, FontColor… để thực yêu cầu Trong ý hộp thoại sau để chọn chữ gạch
(112)11.2 TextBox
TextBox điều khiển dùng để nhập chuỗi làm liệu đầu vào cho ứng dụng hiển thị chuỗi.Người dùng nhập nhiều dịng, tạo mặt nạ để nhập mật TextBox đặt nhóm Common Controls cửa số Toolbox
Hình 11.4 Hiển thị điều khiển Textbox Bảng 11.2 Bảng mô tả thuộc tính TextBox
Thuộc tính Mơ tả
Name Tên TextBox để gọi viết lệnh
Text Nội dung hiển thị ban đầu chương trình chạy
Font Chọn kiểu chữ, kích thước chữ cho TextBox
ForeColor Chọn màu chữ cho TextBox
BackColor Chọn màu cho TextBox
Enable Cho phép/Không cho phép thao tác TextBox
Mutiline Cho phép TextBox có nhiều dịng hay khơng
PasswordChar Ký tự thay nhập vào TextBox
ReadOnly Cho phép/Không cho phép sửa liệu TextBox
Visible Ẩn/ TextBox
TextAlign Canh lề liệu TextBox
MaxLength Quy định chuỗi Max nhập vào TextBox, mặc định là32767 ScrollBars Các loại cuộn (dọc, ngang, hai)
WordWrap Cho phép văn tự động xuống dòng độ dài vượt quáchiều ngang TextBox BorderStyle Định kiểu đường viền cho TextBox
TabIndex TabIndex Chỉ định thứ tự tab TextBox form
(113)CanUndo
Mang giá trị True False, True cho phép thực phương thứcUndo(), mang giá trị True TextBox thực thao tác thêm, sửa hay xóa nội dung
SelectedText Lấy phần nội dung chuỗi bơi đen
SelectionStart Vị trí bắt đầu chọn nội dung chuỗi
SelectionLength Chiều dài chuỗi chọn TextBox
HideSelection
Mang giá trị True False, True khơng cho phép sử dụng thuộc tính SelectionStart, giá trị False cho phép sử dụng SelectionStart
Bảng 11.3 Bảng mô tả kiện TextBox
Sự kiện Mô tả
KeyDown Thực công việc phím nhấn xuống
KeyUp Thực cơng việc phím nhả
KeyPress
Xảy người sử dụng nhấn phím nhả ra, ta dùng kiện để lọc phím khơng muốn nhận cho nhập số (0 đến 9) không cho nhập chuỗi Mỗi kiện KeyPress cho ta cặp kiện KeyDown KeyUp
Click Click Nhấp chuột vào TextBox
DoubleClick Nhấp đúp chuột vào TextBox
MouseEnter Chuột nằm vùng thấy TextBox
MouseHover Chuột nằm vùng hiển thị quãng thời gian
MouseLeave Chuột khỏi vùng nhập liệu TextBox
MouseMove Chuột di chuyển TextBox
TextChanged Giá trị thuộc tính Text bị thay đổi
KeyDown Thực cơng việc phím đượcnhấn xuống KeyUp Thực cơng việc phím đượcnhả ra
KeyPress
Xảy người sử dụng nhấn phím nhả ra, ta dùng kiện để lọc phím khơng muốn nhận cho nhập số (0 đến 9) không cho nhập chuỗi Mỗi kiện KeyPress cho ta cặp kiện KeyDown KeyUp
Click Nhấp chuột vào TextBox
DoubleClick Nhấp đúp chuột vào TextBox
(114)MouseHover Chuột nằm vùng hiển thị quãng thờigian MouseLeave Chuột khỏi vùng nhập liệu TextBox
MouseMove Chuột di chuyển TextBox
TextChanged Giá trị thuộc tính Text bị thay đổi
(115)Ví dụ: Thiết kế form thực yêu cầu
Hình 11.5 Form tìm kiếm chuỗi văn bản Thực chương trình:
Bước 1: Tạo Form có thuộc tính Text = “Giao diện Form 1”
Bước 2: Đưa vào form điều khiển sau: Label, Textbox, Button Bước 3: Thực lập trình cho Button
Lập trình kiện Click cho nút Thốt:
Lập trình kiện Click cho nút Tìm kiếm:
11.3 Button
(116)Hình 11.6 Hiển thị điều khiển Button Bảng 11.4 Bảng mơ tả thuộc tính Button
Thuộc tính Mơ tả
Name Đặt tên cho nút lệnh
Text Nội dung hiển thị nút nhấn
Visible Ẩn/ nút nhấn
Enable Cho phép/ không cho phép tương tác với nútlệnh Font Chỉ định kiểu chữ, kích cỡ chữ hiển thị
ForeColor Màu chữ thị nút lệnh
Image Hình ảnh hiển thị nút lệnh
BackColor Màu nút lệnh
TabIndex Chỉ định thứ tự tab Button form Ví dụ: Thiết kế form xử lý nút lệnh sau
Yêu cầu: Khi nhấp chuột vào nút lệnh “Hiểnthị” in hiển thị chữ “Xin chào” vị trí “ -nội dung hiển thị -”, nhấp chuột vào nút lệnh “Thoát” đóng chương trình
(117)Thực chương trình:
Bước 1: Tạo Form có thuộc tính Text = “Giao diện Form 1” Bước 2: Đưa vào form điều khiển sau: Label, Button Bước 3: Thực lập trình cho Button
Sự kiện Click nút lệnh btnHienThi:
Sự kiện Click nút lệnh btnThoat:
Câu hỏi ôn tập tập
1 Viết chương trình tạo form tính tổng có giao diện:
Hình 11.8 Form tính tổng số n Yêu cầu:
- Nhập vào số n, kiểm tra liệu nhập n, liệu phải số
- Khi nhấn vào nút Tính kết tổng từ n tính lưu vào Textbox
“Tổng là”
- Nút Thoát dùng để đóng chương trình, hỏi trước
(118)Hình 11.9 Form tìm số nhỏ nhất, lớn số Yêu cầu:
- Nhập vào số, kiểm tra liệu nhập, liệu phải số
- Khi nhấn vào nút Tìm kết số lớn nhất, nhỏ lưu vào phù hợp - Nút Thốt dùng để đóng chương trình, hỏi trước
3 Viết chương trình tạo form đến số lần cho lần nhấp chuột trái:
Hình 11.10 Form đếm số lần nhấp chuột Yêu cầu:
- Khi nhấn vào nút “Click here” xuất kết số lần nhấp chuột trái thực nút
- Nút dùng để đóng chương trình, hỏi trước
(119)Hình 11.11 Thực phép tính số Yêu cầu:
- Nhập vào số, kiểm tra liệu nhập, liệu phải số
- Khi nhập số nhấp vào nút “+/-/*/:” thực phép tính phù hợp đưa kết vào Textbox
- Nút Xóa dùng để xóa trắng lại liệu đưa Form trạng thái ban đầu - Nút Thốt dùng để đóng chương trình, hỏi trước
5 Viết chương trình tạo form có giao diện:
(120)BÀI 12: SỬ DỤNG CHECKBOX, RADIOBUTTON, GROUPBOX
Mã bài: 19.12 Giới thiệu:
Điều khiển dùng để gom nhóm đối tượng (GroupBox) giúp việc thiết kế tổng hợp điều khiển Form dễ quan sát sử dụng Ngoài điều khiển lựa chọn CheckBox RadioButton cho phép người dùng phép lựa chọn giao diện lập trình
Mục tiêu:
- Trình bày vận dụng Checkbox cho đồ án - Trình bày vận dụng RadioButton cho đồ án - Trình bày vận dụng GroupBox cho đồ án
- Rèn luyện tính cẩn thận, tự giác, sáng tạo, làm việc nhóm Nội dung chính:
12.1 Checkbox
CheckBox điều khiển cho phép trình bày giá trị để lựa chọn form, người dùng chọn nhiều giá trị lúc Điều khiển CheckBox đặt nhóm Common Controls cửa sổ Toolbox
(121)Bảng 12.1 Bảng mô tả thuộc tính CheckBox
Thuộc tính Mơ tả
AutoCheck
Mang giá trị True False, giá trị True cho phép người dùng nhấp chuột để chọn, False khơng cho phép người dùng nhấp chuột chọn
Checked
Thiết lập cho điều khiển CheckBox lựa chọn không Thiết lập giá trị True điều khiển chọn, thiết lập False điều khiển không chọn
CheckState
Thường dùng để kiểm tra tình trạng CheckBox có chọn hay khơng Mang giá trị Unchecked, Checked, Indeterminate.
Checked: Điều khiển chọn UnChecked: Điều khiển không chọn
Indeterminate: Điều khiển trạng thái không hoạt động Text Chuỗi văn hiển thị bên cạnh CheckBox
ThreeState
Mang giá trị True False; Nếu True cho phép CheckBox có trạng thái: Checked, UnChecked, Indeterminate.
RightToLef t
Mang giá trị Yes No; Cho biết chuỗi văn hiển thị (thuộc tính Text) nằm bên trái hay bên phải CheckBox Sự kiện thường sử dụng CheckBox:
Sự kiện quan trọng thường xuyên sử dụng CheckBox kiện Clickvà CheckedChange Hai kiện CheckBox cho biết nhấp chuột chọn
CheckBox trạng thái chọn (Checked) hay trạng thái không chọn (UnChecked)
(122)Yêu cầu:
- Khi nhấn nút “Lưu” xuất MessageBox hiển thị thông tin gồm: Họ tên sinh viên, lớp, môn học sinh viên chọn
- Khi nhấn nút “Thốt” đóng chương trình Sự kiện Click nút lệnh btnThoat
(123)12.2 RadioButton
RadioButton điều khiển cho phép trình bày giá trị để lựa chọn form Điểm khác biệt RadioButtonvới CheckBox người dùng có lựa chọn với RadioButton nhóm, nghĩa RadioButton phân vào nhóm khác Với RadioButton nhóm, người dùng nhấp chọn RadioButton đồng thời RadioButton khác nhóm bỏ chọn Điều khiển RadioButton đặt nhóm Common Controls cửa sổ Toolbox
Hình 12.3 Hiển thị điều khiển RadioButton
Bảng 12.2 Bảng mơ tả thuộc tính RadioButton
Thuộc tính Mơ tả
Checked
Thiết lập cho điều khiển RadioButton lựa chọn không Thiết lập giá trị True điều khiển chọn, thiết lập False điều khiển không chọn
Text Chuỗi văn hiển thị bên cạnh RadioButton
RightToLeft
(124)Ngoài viêc thiết lập thuộc tính Checked để thay đổi tình trạng RadioButton, lập trình viên sử dụng để kiểm tra tình trạng RadioButton Nếu RadioButton chọn thuộc tính Checked True, RadioButton khơng
được chọn False
(125)Hình 12.4 Các điều khiển để chứa điều khiển khác Panel, GroupBox Sự kiện thường sử dụng RadioButton:
Tương tự CheckBox, kiện thường dùng RadioButton hai kiện Click CheckedChange Sự kiện Click thực người dùng nhấp chuột vào RadioButton, cịn kiện CheckedChang thực tình trạng RadioButton bị thay đổi từ trạng thái chọn (Checked) sang trạng thái không chọn UnChecked) ngược lại
Ví dụ: Thiết kế chương trình sau:
Hình 12.5 Form lựa chọn danh sách môn học sinh viên Thực chương trình
Bước 1: Tạo Form có thuộc tính Text = “Form 1” Bước 2: Đưa vào form điều khiển
(126)Sự kiện Click nút lệnh btnThoat
12.3 GroupBox
GroupBox dạng điều khiển chứa, chứa điều khiển khác hiển thị trên form, giúp cho việc thiết kế giao diện form dễ nhìn khoa học
GroupBox không hỗ trợ trượt (ScrollBar) GroupBox có tiêu đề hiển thị, tiêu đề thiết lập thuộc tính Text Nếu khơng muốn hiển thị tiêu đề, thiết lập chuỗi rỗng thuộc tính Text
Hình 12.6 Hiển thị điều khiển GroupBox
Thơng thường GroupBox sử dụng để nhóm điều khiển RadioButton Bảng 12.4 Bảng mô tả thuộc tính GroupBox
(127)Name Đặt tên cho GroupBox Text Chuỗi hiển thị
Font Thiết lập kiểu chữ, kích thước chữ, ForeColor Thiết lập màu chữ hiển thị
BackColor Thiết lập màu GroupBox Visible
Mang giá trị True False - Nếu True: Hiển thị GroupBox
- Nếu False: Không hiển thị GroupBox
AutoSize
Mang giá trị True False
- Nếu True: GroupBox tự động thay đổi kích thước để hiển thị hết điều khiển chứa bên
- Nếu False: GroupBox có kích thước lập trình viên thiết lập
AutoSizeMod e
Quy định cách thức điều khiển thay đổi kích thước - GrowAndShrink: GroupBox co giãn - GrowOnly: Mặc định, giãn lớn
Ví dụ:
Hình 12.7 Form định dạng chuỗi liệu
Yêu cầu: Khi người dùng nhập chuỗi văn TextBox Label “Chuỗi định dạng” hiển thị chuỗi văn vừa nhập Khi nhấp chuột chọn Radio GroupBox “Màu” GroupBox “Kiểu hiển thị” chuỗi định dạng thay đổi định dạng tương ứng với lựa chọn người dùng
(128)Bước 1: Tạo Form có thuộc tính Text = “Form 1” Bước 2: Đưa vào form điều khiển
Bước 3: Thực lập trình cho Button Sự kiện Click cho nút btnThoat
Sự kiện TextChanged txtNhapChuoi:
Sự kiện CheckedChanged radXanh:
Tương tự cho RadioButton khác Sự kiện CheckedChanged radInDam:
Sự kiện CheckedChanged radInNghieng:
(129)(130)Câu hỏi ôn tập tập
1 Viết chương trình tạo form đăng nhập có giao diện
Hình 12.8 Form đăng nhập hệ thống Yêu cầu:
Người dùng nhập tên tài khoản mật TextBox txtTen txtMatkhau - Nếu CheckBox chkHienThi khơng chọn TextBox txtMatkhau dấu * với ký tự người dùng gõ
- Nếu CheckBox chkHienThi chọn TextBox txtMatkhau hiển thị
các ký tự người dùng gõ
Sau nhập xong tên đăng nhập mật Người dùng nhấn Button “Đăng nhập”:
- Nếu tên tài đăng nhập “admin” mật “123456” xuất MessageBox với nội dung: “Đăng nhập thành công”
- Nếu tên tài khoản mật khơng phải “admin” “123456” xuất MessageBox với nội dung: “Không đăng nhập thành công”
(131)2 Thiết kế giao diện cài đặt chương trình sau
Hình 12.9 Form toán số Yêu cầu:
- Nhập vào số, kiểm tra liệu phải nhập số vào Textbox
- Khi chọn lựa chọn ứng với lựa chọn Label hiển thị tương ứng “Tổng/Hiệu/Tích/Thương”
(132)BÀI 13: SỬ DỤNG COMBOBOX, LISTBOX
Mã bài: 19.13 Giới thiệu:
ComboBox ListBox hai điều khiển có nhiều điểm tương đồng, sử dụng để chứa liệu cho phép người dùng lựa chọn Ứng với trường hợp cụ thể người dùng sử dụng điều khiển phù hợp
Mục tiêu:
- Trình bày vận dụng ComboBox cho đồ án - Trình bày vận dụng ListBox cho đồ án
- Rèn luyện tính cẩn thận, tự giác, sáng tạo, làm việc nhóm Nội dung chính:
13.1 ComboBox
Mỗi lần chọn giá trị, nhập liệu vào Điều khiển ComboBox đặt nhóm Common Controls cửa số Toolbox
Hình 13.1 Hiển thị điều khiển ComboBox Bảng 13.1 Bảng mô tả thuộc tính ComboBox
Thuộc tính Mơ tả
Text Trả nội dung dòng liệu hiển thị
ComboBox
DropdownStyle Quy định dạng ComboBox, nhận giá trị:
(133)- Simple: hiển thị theo dạng ListBox + TextBox chọn liệu từ ListBox nhập vào TextBox - DropDownList: cho phép chọn liệu ComboBox
DropDownHeight Thiết lập chiều cao tối đa sổ xuống ComboBox
DropDownWidth Thiết lập độ rộng mục chọn ComboBox
FormatString
Chuỗi định dạng Tất mục chọn
ComboBox
được định dạng theo chuỗi Việc định dạng thực thuộc tính FormattingEnabled thiết lập
là True
FormatingEnable
Mang hai giá trị True False Nếu True cho phép mục chọn ComboBox định dạng lại Nếu
là False khơng thể định dạng
Items Trả mục chứa ComboBox
DataSource
Chọn tập liệu điền vào ComboBox Tập liệu
là mảng chuỗi, ArrayList,
SelectedIndex Lấy số mục chọn, số mục chọn
0
SelectedItem Trả mục chọn
SelectedText Lấy chuỗi hiển thị mục chọn
SelectedValue
Trả giá trị mục chọn ComboBox có liên kết
liệu Nếu không liên kết liệu thuộc tính ValueMember khơng thiết lập thì giá trị thuộc tính
SelectedValue giá trị chuỗi thuộc tính SelectedItem
ValueMember
Thuộc tính định liệu thành viên cung cấp giá
(134)Ví dụ: Xây dựng chương trình với giao diện sau gồm ComboBox chứa danh sách màu (vàng, xanh, đỏ, đen) Label hiển thị dịng chữ “Hồng Sa, Trường Sa Việt Nam” Yêu cầu chọn màu ComboBox màu dịng chữ Label thay đổi tương ứng
Hình 13.2 Form đổi màu chữ Label Thực chương trình:
Bước 1: Tạo Form có thuộc tính Text = “Form 1” Bước 2: Đưa vào form điều khiển
(135)Sự kiện Click nút lệnh btnDoiMau:
13.2 ListBox
Tại thời điểm chọn nhiều dịng liệu, khơng cho nhập Điều khiển ListBox đặt nhóm Common Controls cửa số Toolbox
Hình 13.3 Hiển thị điều khiển ListBox Bảng 13.2 Bảng mơ tả thuộc tính ListBox
Thuộc tính Mơ tả
SelectionMode
Cho phép chọn nhiều dòng liệu ListBox,
bao gồm:
One: chọn giá trị
MultiSimple: cho phép chọn nhiều, chọn cách click
vào mục chọn, bỏ chọn cách click vào mục chọn
MultiExtended: chọn nhiều cách nhấn kết hợp với
Shift Ctrl
(136)MultiExtended Thuộc tínhSelectedItemschứa dịng dữ liệu chọn
SelectedIndices
Được sử dụng SelectionModelà MultiSimple MultiExtended Thuộc tínhSelectedItemschứa số dịng liệu chọn
FormatString
Chuỗi định dạng Tất mục chọn ListBox định dạng theo chuỗi Việc định dạng thực thuộc tính FormattingEnabled thiết lập True
FormatingEnabl e
Mang hai giá trị True False Nếu True cho phép mục chọn ListBox định dạng lại Nếu False khơng thể định dạng
Items Trả mục chứa ListBox
DataSource Chọn tập liệu điền vào ListBox Tập liệu mảng chuỗi, ArrayList,
SelectedIndex Lấy số mục chọn, số mục chọn
SelectedItem Trả mục chọn
SelectedValue
Trả giá trị mục chọn ListBox có liên kết liệu Nếu khơng liên kết liệu thuộc tính ValueMember khơng thiết lập thì giá trị thuộc tính SelectedValue giá trị chuỗi thuộc tính SelectedItem
(137)Hình 13.4 Form hiển thị danh sách sinh viên chọn Thực chương trình:
Bước 1: Tạo Form có thuộc tính Text = “Form 1” Bước 2: Đưa vào form điều khiển
Bước 3: Thực lập trình cho Button Sự kiện Click cho nút btnThoat
Sự kiện Click nút lệnh btnHienThi:
Câu hỏi ôn tập tập
(138)Hình 13.5 Form Danh sách thực đơn, Thực đơn ngày ListBox1: Hiển thị danh sách tất ăn
- Button “>”: chuyển chọn từ ListBox1 qua ListBox2 - Button “>>”: chuyển tất từ ListBox1 qua ListBox2 - Button “<”: xóa ăn chọn ListBox2
- Button “<<”: xóa tất ăn ListBox2
- Button “In thực đơn” hiển thị hộp thoại MessageBox với nội dung ăn chọn hiển thị ListBox2
- Button “Thoát” : đóng chương trình
(139)Hình 13.6 Xử lý danh sách xử lý danh sách số
- Kiểm tra liệu nhập số Gợi ý sử dụng kiện txt1_KeyPress()… - Sau nhập số nhấn “Enter” nút “Cập nhật” số thêm vào ListBox - Nút “Tổng phần tử chẵn” thực việc tính tổng số chẵn danh sách
Gợi ý
- Nút “Đếm số chẵn” thực việc đếm số chẵn danh sách - Chọn số chẵn
(140)Hình 13.7 Cài đặt nhiều lựa chọn cho Listbox
- Nút “Chọn số chẵn” thực chọn số chẳn danh sách Gợi ý: Sử dụng thuộc tính
- Nút “Thay bình phương” thực việc thay tồn danh sách bình phương
Gợi ý:
- Nút “Xóa số lẻ” thực xóa số lẻ có danh sách Gợi ý:
(141)Gợi ý:
- Làm tương tự với nút “Xóa cuối danh sách”
- Nút “Xóa phần tử chọn” Lựa chọn phần tử danh sách thực xóa tất phần tử chọn Gợi ý từ nút “Xóa số lẻ”
(142)BÀI 14: SỬ DỤNG DATETIMEPICKER, MONTHCALENDAR
Mã bài: 19.14 Giới thiệu:
Để tạo kiểu liệu ngày, tháng, năm giao diện Windows Form, Visual Studio hỗ trợ điều khiển DateTimePicker MonthCanlender Mục tiêu:
- Trình bày vận dụng DateTimePicker cho đồ án - Trình bày vận dụng MonthCalendar cho đồ án
- Rèn luyện tính cẩn thận, tự giác, sáng tạo, làm việc nhóm Nội dung chính:
14.1 DateTimePicker
Điều khiển DateTimePicker cho phép người dùng chọn ngày tháng lịch
biểu biểu diễn dạng ComboBox , người
dùng nhấp chuột vào ComboBox sổ xuống lịch biểu Các đối tượng ngày tháng biểu diễn DateTimePicker thực chất đối tượng thuộc lớp DateTime Điều khiển DateTimePicker đặt nhóm Common Controls cửa sổ Toolbox
(143)Bảng 14.1 Bảng mơ tả thuộc tính DateTimePicker
Thuộc tính Mơ tả
Format Định dạng kiểu hiển thị ngày tháng Lưu ý: Thường sử dụng giá trị kiểu Short
Value Trả giá trị thời điều khiển DateTimePicker Value.Date Trả ngày tháng năm
Value.Day Trả ngày tháng Value.Month Trả tháng
Value.Year Trả năm
Value.DateOfWeek Trả ngày tuần (0 chủ nhật, thứ 2, thứ 3, … thứ 7)
Value.DateOfYear Trả ngày thứ năm CustomFormat
Cho phép tạo định dạng khác ngày tháng Lưu ý: Định dạng ngày tháng năm kiểu Việt Nam phải dd/MM/yyy Khi thuộc tính format phải thiết lập Custom
MaxDate Thiết lập ngày lớn cho phép người dùng chọn điều khiển DateTimePicker
MinDate Thiết lập ngày nhỏ cho phép người dùng chọn điều khiển DateTimePicker
Text Trả ngày hiển thị
Bảng 14.2 Bảng mô tả kiện DateTimePicker
Sự kiện Mô tả
ValueChanged Phát sinh người dùng chọn giá trị khác với giá trị trước điều khiển DateTimePicker CloseUp Phát sinh người dùng kết thúc việc chọn ngày
trên điều khiển DateTimePicker 14.2 MonthCalendar
MonthCalendar điều khiển hiển thị lịch dạng lịch biểu cho phép
người dùng chọn ngày tháng Nhưng khác biệt MonthCalendar cho phép người
(144)Hình 14.2 Hiển thị điều khiển MonthCalendar Bảng 14.3 Bảng mô tả thuộc tính MonthCalendar
Thuộc tính Mơ tả
MaxDate Thiết lập ngày lớn cho phép người dùng chọn điều khiển MonthCalendar
MinDate Thiết lập ngày nhỏ cho phép người dùng chọn điều khiển MonthCalendar
SelectionRange Trả dãy ngày liên tục chọn người dùng
SelectionStart Trả ngày dãy thuộc tính SelectionRange
SelectionEnd Trả ngày cuối dãy thuộc tính SelectionRange
AnnuallyBoldedDate s
Chứa mảng ngày Trong năm, ngày mảng bôi đen MonthCalendar
BoldedDates
Chứa mảng ngày Các ngày bôi đen điều khiển MonthCalendar năm định
MaxSeclectCount Thiết lập số lượng ngày tối đa mà người dùng chọn
MonthlyBoldedDates Chứa mảng ngày Trong tháng, ngày mảng bôi đen MonthCalendar
(145)của dãy Số lượng ngày chọn dãy phải nhỏ giá trị thiết lập thuộc tính MaxSeclectCount
Bảng 14.4.Bảng mô tả kiện MonthCalendar
Sự kiện Mô tả
DateChanged Được phát sinh ngày dãy ngày chọn
Câu hỏi ôn tập tập
Viết chương trình minh họa việc hiển thị lịch, thiết kế giao diện form sau Yêu cầu: nhấp nút hiển thị ngày chọn hiển thị MessageBox
(146)BÀI 15: SỬ DỤNG LISTVIEW, TREEVIEW
Mã bài: 19.15 Giới thiệu:
Điều khiển giúp hiển thị liệu dạng thư mục thu hẹp mở rộng đối tượng Visual Studio phát triển ListView TreeView
Mục tiêu:
- Hiểu vận dụng ListView cho đồ án - Hiểu vận dụng TreeView cho đồ án
- Rèn luyện tính cẩn thận, tự giác, sáng tạo, làm việc nhóm Nội dung chính:
15.1 ListView
ListView điều khiển cho phép hiển thị danh sách đối tượng Mỗi đối tượng hiển thị ListView gọi Item Item đối tượng tạo
từ lớp
ListViewItem Mỗi Item có thuộc tính Text chuỗi ký tự hiển thị cột ListView, Item có SubItem hiển thị cột ListView Điều khiển ListView đặt Common Controls cửa sổ Toolbox:
(147)Có thể thêm ListViewItem vào ListView cách chọn thuộc tính Items cửa Properties ListView sau:
Hình 15.2 Màn hình đối tượng thêm vào ListView
Sau chọn thuộc tính Items cửa sổ Properties, cửa sổ ListViewItem Collection Editor hiển bên Có thể thêm xóa ListViewItem ListView cách nhấn nút Add Remove
Hình 15.3 Màn hình để thêm đối tượng vào ListView
(148)Bảng 15.1 Bảng mô tả thuộc tính ListView
Thuộc tính Mơ tả
View
Thuộc tính View qui định cách hiển thị Item
ListView Thuộc tính View có giá trị:
- Detail: Một Icon (Icon lấy từ ImageList) Text
hiển thị cột Tiếp theo SubItem
hiển thị cột tiếp theo.Tuy nhiên để hiển thị Item
dạng Detail tạo thêm Column Header cho ListView
Items
Trả Item chứa ListView Một số
phương thức
và thuộc tính thường dùng ListView.Items: - Count: Đếm số lượng Item ListView
- Insert( i, <Item mới> ): Chèn thêm Item < Item mới> vào vị trí i ListView
- Add(<Item mới>): thêm Item <Item mới> vào cuối ListView
- Remove(<Item cần xóa>): Xóa Item <Item cần
xóa> khỏi ListView
- RemoveAt(i): Xóa Item có số i khỏi ListView - Contains(<Item cần tìm>): Trả True tìm thấy <Item cần tìm> ListView, trả False
nếu khơng có ListView
- IndexOf(<Item cần tìm>): Nếu <Item cần tìm> có ListView thì trả số Item tìm thấy
ListView, khơng tìm thấy trả -1
MultiSelect
True/ False: Cho phép không cho phép chọn
một lúc
nhiều Item ListView FullRowSelect
Khi chọn dịng liệu highlighted dịng hay
(149)GridLines
Nếu thiết lập True hiển thị dòng cột dạng lưới,
thiết lập False không hiển thị dạng lưới
SelectedItems Trả tập Items chọn ListView LargeImageIcon Gán đối tượng ImageList cho ListView
FocusedItem.Index Trả số dòng chọn ListView SelectedIndices.Coun
t Trả số lượng Item chọn ListView
SelectedIndices
Trả danh sách mục Item chọn myListView.SeletedIndices[0]: trả mục Item
đầu tiên chọn danh sach Item chọn
trong ListView
Bảng 15.2 Bảng mô tả kiện ListView
Sự kiện Mô tả
SelectedIndexChange d
Sự kiện phát sinh có thay đổi mục chọn Item ListView
ItemSelectionChanged Sự kiện phát sinh có thay đổi lựa chọn Item ListView
ItemCheck Xảy trạng thái chọn Item thay đổi
ColumnClick Sự kiện phát sinh column ListView click
MouseClick
Sự kiện phát sinh nhấp chuột chọn Item
(150)Ví dụ: Thiết kế giao diện form sau:
Hình 15.4 Form Thêm lớp học vào ListView
Yêu cầu: Khi người dùng nhập xong tên lớp số lượng sinh viên, sau nhấn nút “Thêm” ListView chèn dịng vào cuối với tên lớp số lượng vừa nhập
Thực chương trình
Sự kiện Click nút btnThem
(151)15.2 TreeView
TreeView điều khiển dùng để hiển thị danh sách đối tượng dạng phân cấp hình 15.5
Hình 15.5 Cấu trúc TreeView
Đối tượng TreeView thường gọi node cấu trúc phân cấp TreeView biểu diễn lớp TreeNode Mỗi node TreeView chứa node khác Node chứa node khác gọi node cha (RootNode) node chứa gọi node (ChildNode) Việc sử dụng điều khiển TreeView để hiển thị hữu ich, trình bày theo dạng phân cấp giúp việc hiển thị rõ ràng có hệ thống Điều khiển TreeView đặt nhóm Common Controls cửa sổ Toolbox
(152)Bảng 15.3 Bảng mô tả thuộc tính TreeView
Thuộc tính Mơ tả
Node Trả đối tượng thuộc lớp TreeNode SelectedNode Trả node chọn TreeView ShowPlusMinus Hiển thị dấu + – trước mổi TreeNode
ShowRootLines Hiển thị đường thằng nối Root Node TreeView
ImageList
Hiển thị hình trước node TreeView
Lưu ý: Phải sử dụng thêm điều khiển ImageList, gán tên đối tượng điều khiển ImageList cho thuộc tính ImageList TreeView
ImageIndex
Giá trị thuộc tính ImageIndex số hình điều khiển ImageList Khi gán số cho thuộc tính ImageIndex hình hiển thị trước node hình có số tương ứng
Lưu ý: Phải sử dụng thuộc tính ImageList trước SelectedImageInde
x
Giá trị thuộc tính SelectImageIndex số hình điều khiển ImageList Khi người dùng chọn node node có hình tương ứng thuộc tính
SelectedImageIndex định
Bảng 15.4 Bảng mô tả kiện TreeView
Sự kiện Mô tả
AfterCollapse Phát sinh thu gọn TreeNode
AfterExpand Phát sinh hiển thị node TreeNode
AfterSelect Phát sinh chọn TreeNode
NodeMouseClic
k Phát sinh chọn node
TreeView điều khiểu để hiển thị node, nhiên việc hiển thị thực chất TreeNode tạo Do để làm việc với node cần sử dụng thuộc tính phương thức lớp TreeNode
Bảng 15.5 Bảng mơ tả thuộc tính TreeNode
Thuộc tính Mơ tả
Nodes Trả tập node
Text Đọc/ gán chuỗi ký tự người dùng nhìn thấy node
(153)LastNode Trả node cuối NextNode Chuyển đến node PrevNode Lùi lại node trước
Parent Trả node cha node Index Trả số node
Bảng 15.6 Bảng mô tả phương thức TreeNode
Phương thức Mô tả
Nodes.Add Thêm node Nodes.Remove Xóa node
Nodes.Insert Chèn vào node (chèn trước, chèn sau node)
Nodes.Clear Xóa tất node node
Ví dụ: Viết chương trình minh họa việc thêm sửa xóa node TreeView Giao diện thiết kế sau:
Hình 15.7 Form để tạo TreeView Thực chương trình:
Bước 1: Tạo Form đặt tiêu đề Form phù hợp Bước 2: Đưa vào form điều khiển
(154)Sự kiện Click nút btnThemCon:
Sự kiện Click nút btnXoaTaCa:
Sự kiện Click nút btnXoaChon:
Sự kiện Click nút btnMoRong:
Sự kiện Click nút btnThuHep:
(155)Câu hỏi ôn tập tập
1 Thiết kế Form có giao diện mẫu sau:
Hình 15.8 Form sử dụng ListView Yêu cầu:
Dùng ListView hình ảnh phù hợp để thiết kế Form Thiết kế Form có giao diện mẫu sau:
Hình 15.9 Form sử dụng ListView có CheckBox Yêu cầu:
(156)3 Thiết kế Form có giao diện mẫu sau:
Hình 15.10 Form sử dụng ListView kết hợp TreeView Yêu cầu:
- Dùng ListView, TreeView hình ảnh phù hợp để thiết kế Form - Phương thức toán gồm: Trả góp, Khốn gọn Bảo hiểm
- Người dùng nhấn chọn xe cần mua ListView, hai điều khiển NumericUpdown Số lượng: Thông tin mua hàng: kích hoạt cho người dùng nhập số lượng thông tin mua hàng
- Khi đặt hàng xong, người dùng nhấn vào button Lưu để lưu lại thông tin mua hàng Thông tin mua hàng hiển thị MessageBox
(157)BÀI 16: SỬ DỤNG PICTUREBOX, TOOLTIP
Mã bài: 19.16 Giới thiệu:
Việc đưa liệu hình ảnh lên Form Visual Studio hỗ trợ với công cụ PictureBox Điều khiển ToolTip giúp hiển thị mở rộng giải thích, hướng dẫn bên điều khiển khác
Mục tiêu:
- Trình bày vận dụng PictureBox cho đồ án - Trình bày vận dụng ToolTip cho đồ án
- Rèn luyện tính cẩn thận, tự giác, sáng tạo, làm việc nhóm Nội dung chính:
16.1 PictureBox
Cũng Control thường sử dụng trọng C#, PictureBox dùng để hiển thị hình ảnh định dạng Bitmap, GIF, icon, định dạng JPEG Khi lập trình phần mềm cần phải sử dụng tới hình ảnh khơng thể bỏ qua Control
Hình 16.1 Hiển thị điều khiển PictureBox
Đối với PictureBox Control thiết lập thuộc tính ảnh thiết kế Form chạy chương trình Cũng thay đổi hình ảnh PictureBox sử dụng PictureBox để hiển thị thông tin khác Để tải ảnh lên PictureBox ta thực sau:
pictureBox1.Image = Image.FromFile("c:\testImage.jpg");
(158)pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
Có tất kiểu hiển thị ảnh PictureBox:
Bảng 16.1 Bảng kiểu hiển thị ảnh PictureBox AutoSize Tự động điều chỉnh kích cỡ ảnh.
CenterImage Căn ảnh
Normal Đặt góc trái phía ảnh vào vị trí góc trái phía
PictureBox
StretchImag e
Giãn nở kích thước theo PictureBox
Ví dụ: Cách sử dụng PictureBox Winform
16.2 ToolTip
Điều khiển Tooltip điều khiển cho phép hiển thị thơng tin thích người dùng đưa chuột qua điều khiển có thiết lập Tooltip Điều khiển Tooltip đặt nhóm Commont Controls cửa sổ Toolbox
(159)Bảng 16.2 Bảng mô tả thuộc tính Tooltip
Thuộc tính Mơ tả
Active
Mang giá trị True False, thiết lập True Tooltip có hiệu lực hiển thị thơng báo, mang giá trị False Tooltip không hiển thị thông báo
AutomaticDelay Thiết lập thời gian xuất Tooltip vừa đưa chuột đến điều khiển, thời gian tính mili giây
AutoPopDelay
Thời gian hiển thị Tooltip kết thúc người dùng đưa chuột đến điều khiển, thời gian tính mili giây
IsBalloon Quy định kiểu hiển thị Tooltip Nếu thiết lập False kiểu hiển thị Tooltip:
ReshowDelay Thời gian mà Tooltip tắt từ người dùng đưa chuột
khỏi điều khiển, thời gian tính mili giây
ShowAlways Ln hiển thị hìn
ToolTipIcon Biểu tượng xuất bên cạnh chuỗi khai báo
thuộc tính TooltipTitle
ToolTipTitle Chuỗi thị bên cạnh biểu tượng TooltipIcon
UseAnimation Thiết lập hiệu ứng ảnh động biểu diễn Tooltip
được hiển thị
UseFading Thiết lập hiệu ứng mờ dần biểu diễn Tooltip
hiển thị
Bảng 16.3 Bảng mô tả phương thức Tooltip
Phương thức Mô tả
SetTooltip() Thiết lập chuỗi hiển thị Tooltip điều khiển GetTooltip() Lấy nội dung chuỗi hiển thị Tooltip
Clear() Loại bỏ tất TooltipText cho điều khiển form Ví dụ: Viết chương trình tạo giao diện form đăng nhập thực yêu cầu chức
(160)Hình 16.3 Form hình đăng nhập có chưa ToolTip u cầu:
- Khi rê chuột vào TextBox1: hiển thị dòng ghi “Nhập chuỗi ký không dấu, không khoảng trắng”
- Khi rê chuột vào TextBox2: hiển thị dòng ghi “Nhập ký tự, nhiều 10 ký tự”
- Khi nhấn nút “Đăng nhập”: hiển thị MessageBox với nội dung “Bạn đăng nhập thành công”
- Khi nhấn nút “Thốt”: khỏi chương trình Thực chương trình:
Bước 1: Tạo Form có thuộc tính Text = “Giao diện Form 1”
Bước 2: Đưa vào form điều khiển sau: Label, Textbox, Button Bước 3: Thực lập trình cho Button
Sự kiện Click nút btnDangNhap:
(161)Câu hỏi ôn tập tập
1 Thiết kế Form có giao diện sau:
(162)2 Thiết kế Form có giao diện sau:
Hình 16.5 Màn hình hiển thị Tooltip Yêu cầu:
(163)BÀI 17: SỬ DỤNG CHECKLISTBOX, NUMERICUPDOWN
Mã bài: 19.17 Giới thiệu:
Việc kiểm tra liệu số nhập vào Textbox Visual Studio hỗ trợ điều khiển khác NumericUpDown Để tạo danh sách liên tiếp CheckBox trình hoạt động dễ dàng
Mục tiêu:
- Trình bày vận dụng CheckListBox cho đồ án - Trình bày vận dụng NumericUpDown cho đồ án - Rèn luyện tính cẩn thận, tự giác, sáng tạo, làm việc nhóm Nội dung chính:
17.1 CheckListBox
Điều khiển CheckedListBox cung cấp tất khả hộp danh sách cho phép hiển thị dấu kiểm bên cạnh mục hộp danh sách
Hình 17.1 Hiển thị điều khiển CheckListBox
(164)public int Add (object item, bool isChecked);
Có thể thêm mục riêng lẻ vào danh sách phương thức Thêm Đối tượng CheckedListBox hỗ trợ ba trạng thái thông qua bảng liệt kê CheckState: Checked, Indeterminate Unchecked
checkedListBox1.Items.Add("Sunday", CheckState.Checked); checkedListBox1.Items.Add("Monday", CheckState.Unchecked); checkedListBox1.Items.Add("Tuesday",
CheckState.Indeterminate);
Hình 17.3 Kết việc thêm vào đối tượng vào CheckListBox Hay thêm phương thức khác sau
string[] days = new[] { "Sunday", "Monday", "Tuesday" }; checkedListBox1.Items.AddRange(days);
Thêm đối tượng danh sách ChekedListBox gán giá trị mặc định Checked:
(165)17.2 NumericUpDown
Điều khiển NumericUpDown cách đơn giản người
sử dụng lựa
chọn giá trị mà rơi số nhỏ số lớn
Hình 17.4 Hiển thị điều khiển NumericUpDown
Điều khiển chấp nhận số nguyên, giá trị thập phân làm tròn
Điều khiển NumericUpDown kiểm sốt bốn thuộc tính
số nguyên
Minimum, Maximum, Value, Increment
Những thuộc tính Minimum Maximum xác định giá trị nhỏ giá trị lớn điều khiển
- Thuộc tính Value giá trị điều khiển
(166)Ngoài ra, người sử dụng thay đổi thuộc tính Value cách gõ vào giá trị điều khiển Nếu giá trị mà người sử dụng nhập vào nằm
giữa
giá trị Minimum Maximum, hai thuộc tính Value Text thay đổi để giá trị nhập vào Nếu giá trị vượt ngồi tập giới hạn, thuộc tính Text nhận giá trị nhập vào, thuộc tính Value nhận giá trị thuộc tính Maximum Để người sử dụng nhập liệu vào điều khiển, ta thiết đặt thuộc tính ReadOnly true
Khi người sử dụng thay đổi giá trị điều khiển NumericUpDown ,
kiện ValueChanged thực Sự kiện ValueChanged thực giá trị thay đổi thông qua mã hay qua mũi tên lên xuống Sự kiện khơng thực người sử dụng nhập vào điều khiển Đoạn code sau trình bày việc sử dụng điều khiển NumericUpDown để xử lý kiện ValueChanged
Ví dụ bên tạo sử dụng NumericUpDown có vùng giá trị nhỏ lớn 32
(167)Bước 1: Tạo Form có thuộc tính Text = “Dental Payment Application” Bước 2: Kéo tất điều khiển vào Form
Bước 3: Áp dụng thuộc tính điều khiển để thực yêu cầu Trong ý hộp thoại sau để chọn chữ gạch
Hình 17.6 Màn hình để cài đặt Tối đa – Tối thiểu NumericUpDown Câu hỏi ôn tập tập
Thiết kế chương trình giống hình sau:
Yêu cầu
a Thiết kế giao diện chương trình đặt tên đối tượng
b Khi khách hàng vào chọn loại cafe Cột “số lượng” mặc định màu ô “Đơn giá” đổi thành màu vàng
(168)(169)BÀI 18: SỬ DỤNG PANEL, SPLITCONTAINER, TABCONTROL
Mã bài: 19.18 Giới thiệu:
Ngồi chức gom nhóm điều khiển khác thành nhóm chức GroupBox học trước Visual Studio cịn có điều khiển khác Panel, SplitContainer, TabControl để gom nhóm điều khiển khác Mục tiêu:
- Trình bày vận dụng Panel cho đồ án
- Trình bày vận dụng SplitContainer cho đồ án - Trình bày vận dụng TabControl cho đồ án
- Rèn luyện tính cẩn thận, tự giác, sáng tạo, làm việc nhóm Nội dung chính:
18.1 Panel
Cũng GroupBox, Panel điều khiển dùng để chứa điều khiển khác
Panel có thuộc tính AutoSize, AutoSizeMode GroupBox thuộc tính đường viền BorderStyle Label
Điểm khác biệt Panel với GroupBox điều khiển Panel khơng có tiêu đề mơ
tả (khơng có thuộc tính Text) có trượt ScrollBar ngang ScollBar dọc (có thuộc tính AutoScroll)
Điều khiển Panel đặt nhóm Containers cửa sổ Toolbox
(170)Bảng 18.1 Bảng mô tả thuộc tính Panel
Thuộc tính Mơ tả
AutoScroll
Mang giá trị True False
- Nếu True: Panel tự động xuất trượt kích thước Panel khơng thể hiển thị hết điều khiển
chứa bên
trong
- Nếu False: Panel không hiển thị trượt
BorderStyle
Kiểu đường viền Panel hiển thị Có giá trị: None, FixedSingle Fixed3D
- None: Không hiển thị đường viền
- FixedSingle:Quanh Panel hiển thị đường viền đơn
- Fixed3D: Hiển thị đường viền Panel dạng chiều 18.2 SplitContainer
Điều khiển SplitContainer giúp phân chia form thành hai phần Cụ thể
SplitContainer cấu tạo hai điều khiển Panel, Panel điều khiển
(171)Hình 18.2 Hiển thị điều khiển SplitContainer
Các Panel hỗ trợ trượt (ScrollBar) thuộc tính AutoScroll thiết
lập True
Tuy nhiên Panel SplitContainer khơng có thuộc tính BorderStyle để thiết lập đường viền, điều khiển chứa SplitContainer, thuộc tính BorderStyle đặt điều khiển SplitContainer Các giá trị thuộc tính BorderStyle SplitContainer gồm giá trị Panel: None, Fixed3D, FixedSingle.
Vạch phân cách Splitter phân cách theo chiều dọc chiều ngang tùy thuộc vào thuộc tính Orientation Thuộc tính Orientation mang hai giá trị để thiết lập SplitContair là: Vertical Horizontal sau:
Hình 18.3 Các kiểu hiển thị điều khiển SplitContainer
Nếu không muốn cho người dùng dịch chuyển vạch phân cách Splitter để thay đổi kích thước hai Panel, lập trình viên thiết lập thuộc tính IsSplitterFixed SplitContainer True Ngồi điểm đặc biệt có thể định khơng cho phép thay đổi kích thước Panel1 Panel2 cách kết hợp thuộc tính FixedPanel thuộc tính IsSplitterFixed bảng sau:
Bảng 18.2 Bảng mơ tả thuộc tính IsSplitterFixed FixedPanel
Thuộc tính Tác dụng
IsSplitterFixed = False
Thuộc tính FixedPanel khơng có hiệu lực Người dùng thay đổi kích thước Panel1 Panel2
IsSplitterFixed = True
Thiết lập thuộc tính FixedPanel:
(172)vạch phân cách Splitter để thay đổi kích thước Panel1 Panel2 Nhưng kích thước hai Panel sẽ thay đổi SplitContainer có thuộc tính Dock Fill người dùng thay đổi kích thước form. - FixedPanel = Panel1: Người dùng khơng thể thay đổi kích thước Panel1 (Khi thay đổi kích thước form kích thước Panel2 thay đổi, kích thước Panel1 không đổi)
- FixedPanel = Panel2: Người dùng khơng thể thay đổi kích thước Panel2 (Khi thay đổi kích thước form
thì kích thước Panel1 thay đổi, kích thước Panel2 khơng đổi)
Một hai Panel SplitContainer ẩn cách thiết lập thuộc tính Panel1Collapsed Panel2Collapsed True Việc ẩn hai Panel có có tác
dụng với Panel Nghĩa thiết lập hai thuộc tính Panel1Collapsed Panel2Collapsed True Khi Panel1Collapsed True thì Panel2Collapsed False ngược lại
Bảng 18.3 Bảng mô tả thuộc tính SplitContainer
Thuộc tính Mơ tả
BorderStyle Thiêt lập đường viên cho SplitContainer Gồm giá trị: None, FixedSingle, Fixed3D.
FixedPanel Cố định kích thước Panel SplitContainer Gồm giá trị: None, Panel1, Panel2
IsSplitterFixed Mang hai giá trị True False Nếu True, cố định vạch phân cách Splitter
Orientation Xác định vạch phân cách Splitter phân cách theo chiều ngang hay dọc Gồm giá trị: Vertical, Horizontal
Panel1Collapse
d Mang hai giá trị True False Nếu True ẩn Panel1 Panel1MinSize Lấy kích thước nhỏ thiết lập kích thước nhỏ
cho Panel1 Panel2Collapse
d Mang hai giá trị True False Nếu True ẩn Panel2 Panel2MinSize Lấy kích thước nhỏ thiết lập kích thước nhỏ
(173)SplitterDistance
Trả khoảng cách pixel từ Splitter đến cạnh bên trái (nếu hai Panel nằm dọc) hay đến cạnh (nếu hai Panel nằm ngang)
SplitterWidth thiết lập độ rộng vạch phân cách Splitter
Ví dụ: Viết chương trình có giao diện hình bên Gồm: điều khiển SplitContainer với Panel1 chứa điều khiển ListView Panel2 chứa điều khiển WebBrowser
Yêu cầu: Người dùng nhập đường dẫn website vào TextBox nhấn nút thêm Đường dẫn website vừa nhập đưa vào ListView Người dùng hiển thị website WebBrowser cách nhấp chuột vào đường dẫn chứa ListView
Hình 18.4 Form dùng điều khiển kết hợp Panel để phân bổ, gom nhóm Thực chương trình:
Bước 1: Tạo Form có thuộc tính Text = “Form 1” Bước 2: Đưa vào form điều khiển
Bước 3: Thực lập trình cho Button Sự kiện Click cho nút btnThoat
(174)Sự kiện Click nút btnThem:
Sự kiện Click nút btnCapNhat:
Sự kiện Click nút btnXoa:
Sự kiện MouseClick listLinkWebsite:
3 TabControl
TabControl điều khiển dạng Containers, chứa diều khiển
khác Điểm đặc biệt TabControl cho phép thể nhiều page form Mỗi page chứa nhiều điều khiển khác bên Điều khiển
(175)Hình 18.5 Hiển thị điều khiển TabControl TabPage:
Thuộc tính quan trọng TabControl TabPage Một TabControl có nhiều TabPage Người dùng nhấp vào tab để chuyển đổi qua lại TabPage với
Hình 18.7 Hiển thị giao diện TabControl
(176)Hình 18.8 Màn hình để thêm TabPage
Điều khiển TabPage có nhiều điểm giống với điều khiển Panel TabPage hỗ trợ trượt cần thuộc tính AutoScroll thiết lập True, có thuộc tính BorderStyle để thiết lập đường viền quanh TabPage với giá trị: None, FixedSingle, Fixed3D Tuy nhiên có điềm khác biệt với Panel TabPage hỗ trợ thuộc tính Text, chuỗi mơ tả thiết lập thuộc tính Text hiển thị tab TabPage:
Hình 18.9 Màn hình hiển thị TabPage giao diện Bảng 18.4 Bảng mô tả thuộc tính TabControl
Thuộc tính Mơ tả
Appearance Thuộc tính định TabPage hiển thị hình dạng Có giá trị: Normal, Button FlatButtons
Alignment
Thuộc tính xác định tab hiển thị trên, dưới, trái hay phải TabControl Gồm giá trị:
Multiline Mang hai giá trị True False
(177)tab số lượng tab vượt phạm vi kích thước TabControl
Nếu False: Chỉ cho phép tab hiển thị dòng TabPages Chứa tập các TabPage có TabControl
TabCount Trả số lượng TabPage mà TabControl có SelectedTab Trả điều khiển TabPage chọn SelectedIndex Trả vị trí TabPage chọn
Ví dụ: Viết chương trình quản lý nhân hình 18.9 18.10 Chương trình gồm TagPage: TagPage Quản lý nhân viên TagPage Quản lý giáo viên
TagPage quản lý nhân viên: Cho phép thêm, sửa xóa nhân viên Thông tinh
nhân viên cần quản lý bao gồm: Họ tên nhân viên, chức vụ nhân viên, hệ sốlương lương
TagPage Quản lý giáo viên: Cho phép thêm sửa xóa giáo viên Thông tin giáo
viên cần quản lý gồm: Họ tên giáo viên, chức vụ giáo viên, tiền giảng tiết, số tiết dạy học vị giáo viên
(178)Hình 18.11 Màn hình Tab Quản lý nhân viên Sự kiện Click btnCapNhatNV:
(179)Sự kiện Click btnXoaNV:
Sự kiện SelectedIndexChanged listNhanVien:
Câu hỏi ôn tập tập
(180)Hình 18.12 Form tự động phát sinh nút Yêu cầu:
- Khi nhấn F5 chạy chương trình xuất giao diện yêu cầu
- Người dùng nhập tổng số Button cần phát sinh TextBox txtTongNut; nhập
(181)Hình 18.13 Màn hình kết nhập liệu
Khi người dùng nhấn vào nút nhấn xuất thông báo “Bạn vừa nhấn nút: _” Riêng nút số 10 người dùng nhấn xuất thông báo “Chúc mừng bạn trúng 01 tỉ USD”
(182)BÀI 19: TẠO KẾT NỐI, ĐÓNG KẾT NỐI CƠ SỞ DỮ LIỆU
Mã bài: 19.19 Giới thiệu:
Việc kết nối sở liệu lập trình quan trọng, giúp cho q trình thao tác giao diện lập trình phần sở liệu thực cách tối ưu
Mục tiêu:
- Trình bày cách thức kết nối sở liệu
- Sử dụng kiểu liệu để mở kết nối đóng kết nối sở liệu - Rèn luyện tính cẩn thận, tự giác, sáng tạo, làm việc nhóm
Nội dung chính:
19.1 Các kiểu liệu kết nối
ADO.NET ? Là mơ hình cho phép người lập trình thao tác với nhiều loại sở liệu theo cách CSDL SQL Server, MS Access, Oracle, …
ADO.NET ?
Là mơ hình cho phép người lập trình thao tác với nhiều loại sở liệu theo cách
CSDL SQL Server, MS Access, Oracle, …
Ứng với loại CSDL NET Framework Data Provider thích hợp
(183)Hình 19.1 Các mơ hình kết nối sở liệu .NET Framework Data Provider for Microsoft SQL Server
Tối ưu kết nối với SQL Server (từ phiên 7.0) Kết nối trực tiếp không thông qua ODBC OLE DB Các lớp cung cấp thuộc System.Data.SqlClient
.NET Framework Data Provider for OLE DB Sử dụng native OLE DB
SQLOLEDB provider MSDAORA provider
Microsoft.Jet.OLEDB.4.0 provider
Các lớp cung cấp thuộc System.Data.OleDb .NET Framework Data Provider for ODBC
Sử dụng native ODBC Driver Manager SQL Server driver
Microsoft ODBC for Oracle driver Microsoft Access driver
Các lớp cung cấp thuộc System.Data.Odbc .NET Framework Data Provider for Oracle
(184) SQL Server driver
Microsoft ODBC for Oracle driver Microsoft Access driver
Các lớp cung cấp thuộc System.Data.OracleClient Các lớp Data Provider
IDbConnection Interface
o Dùng để tạo kết nối (connection) đến CSDL Được cài đặt cho
các lớp Data Provider
o Ví dụ: với Data Provider for SQL Server sử dụng lớp
SqlConnection IDbCommand Interface
o Dùng để thực câu lệnh, truyền tham số, nhận kết
quả trả Được cài đặt cho lớp Data Provider
o Ví dụ: với Data Provider for SQL Server sử dụng lớp
SqlCommand IDataReader Interface
o Dùng để đọc liệu theo cách forward-only read-only
IDataAdapter Interface
o Dùng để đọc liệu từ CSDL lưu DataSet
o DataSet CSDL thu nhỏ đặt nhớ máy client o Người dùng thao tác DataSet ghi lại thay đổi trở
lại CSDL
o Dữ liệu đọc lưu DataSet liệu XML
Quy trình kết nối đến CSDL
Tạo đối tượng Connection xác định chuỗi kết nối (Connection String) Tạo đối tượng Command xác định câu lệnh SQL
Mở đối tượng Connection (Open)
Thực câu lệnh SQL xử lý kết (Execute) Đóng đối tượng Connection (Close)
(185)Thông tin chuỗi kết nối Tên Server Tên Database
Kiểu đăng nhập (Windows SQL Server) Tên user
Mật
19.2 Tạo kết nối liệu
(186)Hình 19.3 Lựa chọn kết nối sở liệu
(187)(188)Hình 19.6 Kiểm tra kết nối
(189)Hình 19.8 Màn hình lựa chọn đối tượng sở liệu
(190)Kết nối lệnh
19.3 Đóng kết nối sở liệu
- Thuộc tính SqlConnection để đóng kết nối đến CSDL Open()
- Việc đóng kết nối đến CSDL giúp giải phóng kết nối đến CSDL làm việc
- Giảm tải việc tranh chấp liệu truy cập liệu
(191)Câu hỏi ôn tập tập
1 Thực tạo sở liệu QLBANHANG gồm bảng sau:
KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK)
NHANVIEN (MANV,HOTEN, NGVL, SODT) SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA) HOADON (SOHD, NGHD, MAKH, MANV
Tạo kết nối đến CSDL
2 Thực tạo sở liệu QLNHANVIEN gồm bảng sau:
SINHVIEN(MASV, HOTENSV, NU, NGAYSINH, NOISINH,TINH,MALOP) LOP(MALOP,TENLOP, MAKHOA)
KHOA(MAKHOA,TENKHOA)
MONHOC(MAMH,TENMH,DONVIHT)
GIANGVIEN(MAGV,HOTENGV,HOCVI,CHUYENNGANH,MAKHOA) KETQUA(MASV, MAMH, LANTHI, DIEMTHI)
(192)BÀI 20: TRUY XUẤT CƠ SỞ DỮ LIỆU BẰNG DATASET
Mã bài: 19.20 Giới thiệu:
Lập trình sở liệu phần quan trọng lập trình ứng dụng, trung gian kết nối người sử dụng với sở liệu
Với công nghệ ADO.NET có chuẩn thống để lập trình thao tác với nguồn sở liệu khác Access, MySQL, SQL Server, Oracle… lập trình ứng dụng với dạng WinForm WebForm
Tìm hiểu đối tượng quan trọng ADO.NET để lập trình với CSDL như: Connection, Command, DataReader, DataAdapter, DataSet để kết nối đến hệ quản trị CSDL SQL Server
Mục tiêu:
- Trình bày cơng dụng Control Dataset
- Sử dụng control Dataset để truy xuất sở liệu - Vận dụng control Dataset cho đồ án
- Rèn luyện tính cẩn thận, tự giác, sáng tạo, làm việc nhóm Nội dung chính:
20.1 Định nghĩa Dataset.
DataSet đối tượng chứa nhiều DataTable với mối liên hệ chúng (relationship) kể ràng buộc (constraint) lưu hoàn toàn nhớ để làm việc offline Qua viết này, hiểu cấu trúc DataSet, DataTable nạp liệu, tạo Relation, Constraint thao tác liệu đối tượng liệu
Cấu trúc DataSet DataTable
Để làm việc với DataSet DataTable cần thêm (Import) thư viện hàm sau:
Namespace: System.Data
(193)Hình 20.1 Mơ tả đối tượng DataSet
Các property DataSet DataTable dùng để lưu trữ collection Bảng 20.1 Bảng mô tả DataSet
Kiểu Tên Mô tả
DataTableCollection Tables Lấy liệu bảng chứa đối tượng System.Data.DataSet
DataRelationCollectio
n Relations
Lấy liệu quan hệ liên kết với bảng cho phép định hướng từ bảng cha đến bảng
Bảng 20.2 Bảng mô tả DataTable:
Type Name Description
DataColumn Columns Lấy liệu cột bảng DataRow Rows Lấy liệu cột bảng
20.2 Thao tác truy xuất liệu với Dataset.
Để truy xuất liệu DataSet cần thực bước sau: Bước 1: Kết nối đến CSDL
(194)Bước 3: Dùng thuộc tính Fill để đưa liệu từ SqlDataAdapter vào DataTable thông qua DataSet
Bước 4: Từ thao tác truy xuất sở liệu Code thực hiện:
Thực bước đoạn Code sau:
Các bước 2, 3, đoạn code bên đưa vào kiện _Load form để lấy liệu lên DataSet
Câu hỏi ôn tập tập
1 Thực tạo CSDL phần mềm quản trị sở liệu SQL Server giao diện lệnh CSDL QLTHUVIEN sau:
(195)go
use QLTHUVIEN go
/*=============DANH MUC HỆ ĐÀO TẠO ==============*/ Create table HEDAOTAO
(
MAHE char(5)primary key, TENHE nvarchar(100) not null, )
/*==============DANH MUC SINHVIEN ============*/ Create table SINHVIEN
(
MASV char(10) primary key, TENSV nvarchar(200)not null, NGAYSINH date,
GIOITINH nvarchar(5),
MAHE CHAR (5) references HEDAOTAO (MAHE) )
/*==============NHAP DU LIEU LOAIPHONG=============*/ INSERT INTO HEDAOTAO(MAHE,TENHE)
values('CD',N'Cao đẳng')
INSERT INTO HEDAOTAO(MAHE,TENHE) values('TC',N'Trung cấp')
INSERT INTO HEDAOTAO(MAHE,TENHE) values('SC',N'Sơ cấp')
/*==============NHAP DU LIEU PHONG=============*/
INSERT INTO SINHVIEN(MASV,TENSV,NGAYSINH,GIOITINH,MAHE) values('SV01',N'Nguyễn Văn An', '01/02/2004', 'Nam', 'CD')
(196)INSERT INTO SINHVIEN(MASV,TENSV,NGAYSINH,GIOITINH,MAHE) values('SV03',N'Lương Xuân Trường', '11/02/2002', 'Nam', 'TC')
INSERT INTO SINHVIEN(MASV,TENSV,NGAYSINH,GIOITINH,MAHE) values('SV04',N'Nguyễn Thị Ngọc Anh', '09/08/2002', N'Nữ', 'CD')
INSERT INTO SINHVIEN(MASV,TENSV,NGAYSINH,GIOITINH,MAHE) values('SV05',N'Trịnh Thị Mến', '09/13/2004', N'Nữ', 'TC')
INSERT INTO SINHVIEN(MASV,TENSV,NGAYSINH,GIOITINH,MAHE) values('SV06',N'Trương Tiến Đạt', '02/04/2004', 'Nam', 'TC')
(197)BÀI 21: HIỂN THỊ CƠ SỞ DỮ LIỆU BẰNG DATAGRIDVIEW Mã bài: 19.21
Giới thiệu:
Điều khiển giúp hiển thị liệu dạng lưới (bảng) sử dụng để hiển bảng liệu từ sở liệu
Mục tiêu:
- Trình bày công dụng control DataGridView
- Sử dụng control DataGridView để truy xuất hiển thị sở liệu - Vận dụng control DataGridView cho đồ án
- Rèn luyện tính cẩn thận, tự giác, sáng tạo, làm việc nhóm Nội dung chính:
21.1 Ý nghĩa DataGridView.
Là control tổ chức dạng bảng với cột dọc (column) hàng ngang (row), đầu cột có tên cột DataGridView hữu ích trường hợp xuất liệu có cấu trúc mảng chiều, bảng liệu, lưu trữ thống kê, database…
Hình 21.1 Hiển thị điều khiển DataGridView Xử lý cột (Column) DataGridView
(198)thể thêm cột thiết lập tùy chỉnh cho cột Thêm cột Add Column chỉnh sửa cột Edit Column Các checkbox bên thiết lập cho phép (hoặc khơng) thêm, bớt, chỉnh sửa, xóa liệu DataGridView trình chạy ứng dụng
Nhìn vào bảng Edit Column bên ta thấy trình quản lý column, ta thay đổi tên, text hiển thị đầu dòng số tùy chỉnh layout nhóm chức Layout
Xử lý cột Code.
Bên cách thêm cột cho DataGridView Trong ví dụ ta cần thêm cột nên tạo đối tượng DataGridViewTextBoxColumn thứ tự thiết lập thuộc tính cho cột cuối thông qua phương thức AddRange để Add cột vào DataGridView Trong ví dụ ta thấy cịn có cột nhỏ bên trái DataGridView, để ẩn cột ta thiết lập giá trị False cho thuộc tính RowHeaderVisible
Thêm liệu cho DataGridView
Thông qua phương thức Rows.Add() ta dễ dàng thêm liệu cho DataGridView Ta thấy DataGridView có cột nên đối số phương thức Rows.Add() cần có chuỗi, vị trí sau bị chừa trống Truy xuất liệu DataGridView
DataGridView tổ chức liệu giống mảng chiều thông thường, ta thiết lập truy xuất liệu dễ dàng thông qua số hàng cột Bên ta tiến hành lấy liệu DataGridView thông qua số hàng, cột đưa vào TextBox Lưu ý: liệu Cell (ô) lưu trữ kiểu string Việc gán liệu vào bảng tiến hành tương tự
Event Cell Click
(199)(200)21.2 Các thiết lập thuộc tính.
Bảng 21.1 Bảng mơ tả thuộc tính DataGridView
Thuộc tính Mơ tả
AutoSizeColumnsMode Các kiểu lựa chọn với Cột (Đặt chế độ khác nhau)
AutoSizeRowsMode Các kiểu lựa chọn với Hàng (Đặt chế độ khác nhau)
BackGroundColor Chọn mầu cho DataGridView
BorderStyle Đặt kiểu đường viền bao quanh cho DataGridView
CellBorderStyle Đặt đường viền cho ô ColumnHeadersBorderStyle Đặt đường viền cho tiêu đề cột ColumnHeadersHeight Đặt chiều cao cho tiêu đề cột
ColumnHeadersVisible Nhận hai giá trị True hay False - True: Cho phép hiển thị tiêu đề cột - False: Không cho phép hiển thị tiêu để
cột
Columns Làm việc với cột (Đặt tiêu đề cho Headers, lựa chọn kiểu cột (Checkbox, Button, Image…) → Trong DataGridView cột là: Cột Button, Cột Checkbox…
DataMember Chọn sở liệu để hiển thị nên DataGridView
DataSource Chọn nguồn liệu cho DataGridView (hai thuộc tính DataSource DataMember hay với nhau)
GridColor Chọn màu cho lưới (các hàng, cột ngăn cách lưới)
MultiSelect Cho phép/Khơng cho phép chọn nhiều dịng? ReadOnly Nhận hai giá trị True hay False
- True: Cho phép thay đổi giá trị các phần tử (các Cell)
- False: không cho phép thay đổi giá trị phần tử
RowHeadersBorderStyle Chọn kiểu viền cho Hàng (Rows) RowHeaderVisible Nhận hai giá trị True hay False
- True: Cho phép hiển thị Headers hàng(Cột mép bên trái) - False: Ngược lại
https://visualstudio.microsoft.com/download https://msdn.microsoft.com/query/dev15.query?appId=Dev15IDEF1&l=en-S&k=k(MSDNSTART)&rd=true PictureBox