1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Đề cương lập trình nâng cao với c

174 197 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 174
Dung lượng 4,39 MB

Nội dung

Và nhận một trong hai giá trị - GrowOnly: Cho phép - và GrowAndShrink: Không cho phép CancelButton Giá trị mà thuộc tính này nhận là tên của một Button trên Form Nếu Form có chứa button

Trang 1

MỤC LỤC

BÀI 1 TỔNG QUAN VỀ NET VÀ CÁC CONTROL TRONG C# 7

1.1 Môi trường thực thi ngôn ngữ chung – CLR 7

1.2 Ngôn ngữ trung gian - IL 8

1.3 Giới thiệu về Net Framework 9

1.4 Tạo một ứng dụng Windows form 10

1.5 Lớp Control 10

1.6 Form 12

1.6.1 Chức năng 12

1.6.2 Một số thuộc tính thường dùng 12

1.6.3 Một số sự kiện thường dùng 15

1.6.4 Minh họa 16

BÀI 2 MỘT SỐ CONTROL TRONG C# 20

2.1 Textbox 20

2.1.1 Chức năng 20

2.1.2 Một số thuộc tính thường dùng 20

2.2 RichTextBox 27

2.2.1 Chức năng 27

2.2.2 Một số thuộc tính thường dùng 27

2.3 DataGridView 33

2.3.1 Chức năng 33

2.3.2 Một số khái niệm liên quan đến DataGridView 33

2.4 ListView 51

2.4.1 Chức năng 51

2.4.2 Một số khái niệm liên quan đến ListView 51

BÀI 3 THỰC HÀNH MỘT SỐ CONTROL TRONG C# (BUỔI 1) 69

Trang 2

3.1 Mục tiêu 69

3.2 Nội dung thực hành 69

3.3 Bài tập tự làm 72

BÀI 4 THẢO LUẬN VỀ CÁC CONTROL 73

4.1 Mục tiêu 73

4.2 Tổ chức thực hiện 73

4.3 Nội dung thảo luận 73

4.3.1 Bài thảo luận số 1 73

4.3.2 Bài thảo luận số 2 74

4.3.3 Bài thảo luận số 3 75

BÀI 5 THỰC HÀNH MỘT SỐ CONTROL TRONG C# (BUỔI 2) 76

5.1 Mục tiêu 76

5.2 Nội dung thực hành 76

5.3 Bài tập tự làm 80

BÀI 6 USER CONTROL 81

6.1 User Control (UC) 81

6.1.1 Khái niệm 81

6.1.2 Xây dụng UC 81

BÀI 7 THỰC HÀNH USER CONTROL 82

7.1 Mục tiêu 82

7.2 Nội dung thực hành 82

7.3 Bài tập tự làm 85

BÀI 8 THAO TÁC VỚI FILE XML VÀ REGISTRY 86

8.1 Thao tác với file XML 86

8.1.1 XML là gì? 86

8.1.2 Cú pháp XML 86

Trang 3

8.1.3 Đọc/ghi file XML trong C# 87

8.2 Thao tác với Registry 90

8.2.1 Giới thiệu về Registry 90

8.2.2 Cấu trúc Registry của Windows 91

8.2.3 Thao tác với Registry trong C# 92

BÀI 9 THỰC HÀNH THAO TÁC VỚI FILE XML VÀ REGISTRY 94

9.1 Mục tiêu 94

9.2 Nội dung thực hành 94

9.3 Bài tập tự làm 98

BÀI 10 THẢO LUẬN VỀ USER CONTROL VÀ CÁC THAO TÁC VỚI XML, REGISTRY 100

10.1 Mục tiêu 100

10.2 Tổ chức thực hiện 100

10.3 Nội dung thảo luận 100

10.3.1 Bài thảo luận số 1 100

10.3.2 Bài thảo luận số 2 100

10.3.3 Bài thảo luận số 3 101

BÀI 11 GIỚI THIỆU ADO.NET 102

11.1 Giới thiệu ADO.NET 102

11.2 Các mô hình thao tác với CSDL 103

11.3 Kết nối đến nguồn dữ liệu bằng đối tượng Connection 104

11.3.1 Chức năng 104

11.3.2 Khai báo 104

11.3.3 Kết nối tới Cơ sở dữ liệu 105

11.4 Thực thi câu lệnh SQL bằng đối tượng Command 107

11.4.1 Chức năng 107

Trang 4

11.4.3 Các phương thức thường của đối tượng Command 108

11.4.4 Sử dụng đối tượng Command 109

11.5 Truy vấn và nhận về dữ liệu với DataReader 112

11.5.1 Chức năng 112

11.5.2 Khai báo 112

11.5.3 Sử dụng đối tượng DataReader 113

BÀI 12 THỰC HÀNH ĐỐI TƯỢNG CONNECTION, COMMAND VÀ DATAREADER 115

12.1 Mục tiêu 115

12.2 Nội dung thực hành 115

12.3 Bài tập tự làm 119

BÀI 13 ĐỐI TƯỢNG DATAADAPTER, DATASET VÀ PARAMETER 122

13.1 Cập nhật và truy vấn dữ liệu với đối tượng DataAdapter 122

13.1.1 Chức năng 122

13.1.2 Khai báo đối tượng DataAdapter 122

13.1.3 Sử dụng đối tượng DataAdapter 122

13.2 Mô hình DataSet 124

13.2.1 Chức năng 124

13.2.2 Khai báo 124

13.2.3 Mô hình DataSet 124

13.3 Đối tượng Parameter 125

13.3.1 Chức năng 125

13.3.2 Sử dụng 125

BÀI 14 THỰC HÀNH ĐỐI TƯỢNG DATAADAPTER, DATASET VÀ PARAMETER 128

14.1 Mục tiêu 128

14.2 Nội dung thực hành 128

Trang 5

14.3 Bài tập tự làm 135

BÀI 15 THẢO LUẬN VỀ CÁC ĐỐI TƯỢNG CỦA ADO 137

15.1 Mục tiêu 137

15.2 Tổ chức thực hiện 137

15.3 Nội dung thảo luận 137

15.3.1 Bài thảo luận số 1 137

15.3.2 Bài thảo luận số 2 138

15.3.3 Bài thảo luận số 3 139

BÀI 16 SẮP XẾP VÀ TÌM KIẾM DỮ LIỆU VỚI DATAVIEW, LINQ 140

16.1 Ràng buộc dữ liệu với các điều khiển 140

16.1.1 Mục đích 140

16.1.2 Sử dụng 140

16.2 Sử dụng DataView trong sắp xếp và tìm kiếm dữ liệu 140

16.2.1 Chức năng 140

16.2.2 Một số thuộc tính thường dùng 141

16.2.3 Một số Phương thức của đối tượng DataView 141

16.2.4 Ví dụ sử dụng đối tượng DataView 141

16.3 LINQ 143

16.3.1 Giới thiệu về LINQ 143

16.3.2 Các thành phần của LINQ 143

16.3.3 LINQ vs ADO.NET 147

16.3.4 Cài đặt LinQ 147

16.3.5 Sử dụng LinQ 149

BÀI 17 THỰC HÀNH SỬ DỤNG DATAVIEW VÀ LINQ 152

17.1 Mục tiêu 152

17.2 Nội dung thực hành 152

Trang 6

17.3 Bài tập tự làm 154

BÀI 18 THẢO LUẬN VỀ LINQ 157

18.1 Mục tiêu 157

18.2 Tổ chức thực hiện 157

18.3 Nội dung thảo luận 157

18.3.1 Bài thảo luận số 1 157

18.3.2 Bài thảo luận số 2 158

BÀI 19 THIẾT KẾ REPORT VỚI CRYSTAL REPORT 159

19.1 Thiết kế báo cáo với Crystal Report 159

19.2 Nạp và hiển thị Report trong chương trình 167

19.3 Thiết kế Report động 167

19.3.1 Mục đích 167

19.3.2 Sử dụng 168

BÀI 20 THỰC HÀNH THIẾT KẾ REPORT VỚI CRYSTAL REPORT 171

20.1 Mục tiêu 171

20.2 Nội dung thực hành 171

20.3 Bài tập tự làm 173

Trang 7

BÀI 1 TỔNG QUAN VỀ NET VÀ CÁC CONTROL TRONG C#

1.1 Môi trường thực thi ngôn ngữ chung – CLR

Như đã đề cập thì CLR thực hiện quản lý bộ nhớ, quản lý thực thi tiểu trình, thực thi mã nguồn, xác nhận mã nguồn an toàn, biên bịch và các dịch vụ hệ thống khác Những đặc tính trên là nền tảng cơ bản cho những mã nguồn được quản lý chạy trên CLR

Do chú trọng đến bảo mật, những thành phần được quản lý được cấp những mức độ quyền hạn khác nhau, phụ thuộc vào nhiều yếu tố nguyên thủy của chúng như: liên quan đến Internet, hệ thống mạng trong nhà máy, hay một máy tính cục bộ Điều này có nghĩa rằng, một thành phần được quản lý có thể có hay không có quyền thực hiện một thao tác truy cập tập tin, thao tác truy cập registry, hay các chức năng nhạy cảm khác

CLR thúc đẩy việc mã nguồn thực hiện việc truy cập được bảo mật Ví dụ, người

sử dụng giới hạn rằng việc thực thi nhúng vào trong một trang web có thể chạy được hoạt hình trên màn hình hay hát một bản nhạc, nhưng không thể truy cập được dữ liệu riêng

tư, tập tin hệ thống, hay truy cập mạng Do đó, đặc tính bảo mật của CLR cho phép những phần mềm đóng gói trên Inernet có nhiều đặc tính mà không ảnh hưởng đến việc bảo mật hệ thống

CLR còn thúc đẩy cho mã nguồn được thực thi mạnh mẽ hơn bằng việc thực thi

mã nguồn chính xác và sự xác nhận mã nguồn Nền tảng của việc thực hiện này

là Common Type System (CTS) CTS đảm bảo rằng những mã nguồn được quản lý thì được tự mô tả (self- describing) Sự khác nhau giữa Microsoft và các trình biên dịch ngôn ngữ của hãng thứ ba là việc tạo ra các mã nguồn được quản lý có thể thích hợp với CTS Điều này thì mã nguồn được quản lý có thể sử dụng những kiểu được quản lý khác

và những thể hiện, trong khi thúc đẩy nghiêm ngặt việc sử dụng kiểu dữ liệu chính xác và

an toàn

Thêm vào đó, môi trường được quản lý của runtime sẽ thực hiện việc tự động xử

lý layout của đối tượng và quản lý những tham chiếu đến đối tượng, giải phóng chúng khi chúng không còn được sử dụng nữa Việc quản lý bộ nhớ tự động này còn giải quyết hai lỗi chung của ứng dụng: thiếu bộ nhớ và tham chiếu bộ nhớ không hợp lệ

Trang 8

Trong khi runtime được thiết kế cho những phần mềm của tương lai, nó cũng hỗ trợ cho phân mềm ngày nay và trước đây Khả năng hoạt động qua lại giữa mã nguồn được quản lý và mã nguồn không được quản lý cho phép người phát triển tiếp tục sử dụng những thành phần cần thiết của COM và DLL

Rutime được thiết kế để cải tiến hiệu suất thực hiện Mặc dù CLR cung cấp nhiều các tiêu chuẩn dịch vụ runtime, nhưng mã nguồn được quản lý không bao giờ được dịch

Có một đặc tính gọi là Just-in-Time (JIT) biên dịch tất cả những mã nguồn được quản lý vào trong ngôn ngữ máy của hệ thống vào lúc mà nó được thực thi Khi đó, trình quản lý bộ nhớ xóa bỏ những phân mảnh bộ nhớ nếu có thể được và gia tăng tham chiếu bộ nhớ cục bộ, và kết quả gia tăng hiệu quả thực thi

1.2 Ngôn ngữ trung gian - IL

Như chúng ta đã biết, Intermediate Language hoạt động như là bản chất của NET Framework Là lập trình viên C#, chúng ta nên biết rằng mã C# sẽ luôn được dịch sang Intermediate Language trước khi nó được thực thi (thật vậy, trình biên dịch C# chỉ dịch sang mã có quản) Chúng ta hãy cùng khám phá các tính năng chính của IL, bất kì ngôn ngữ nào hướng NET cũng sẽ hỗ trợ các đặc tính chính của IL

▪ Sau đây là những đặc tính chính của Intermediate Language:

▪ Hướng đối tượng và dùng interfaces

▪ Sự tách biệt giữa kiểu giá trị và kiểu tham chiếu

▪ Định kiểu mạnh

▪ Quản lỗi thông qua các ngoại lệ

▪ Sự dụng các thuộc tính

Trang 9

1.3 Giới thiệu về Net Framework

.NET Framework là một platform mới làm đơn giản việc phát triển ứng dụng trong môi trường phân tán của Internet .NET Framework được thiết kế đầy đủ để đáp ứng theo quan điểm sau:

▪ Để cung cấp một môi trường lập trình hướng đối tượng vững chắc, trong đó mã nguồn đối tượng được lưu trữ và thực thi một cách cục bộ Thực thi cục bộ nhưng được phân tán trên Internet, hoặc thực thi từ xa

▪ Để cung cấp một môi trường thực thi mã nguồn mà tối thiểu được việc đóng gói phần mềm và sự tranh chấp về phiên bản

▪ Để cung cấp một môi trường thực thi mã nguồn mà đảm bảo việc thực thi an toàn mã nguồn, bao gồm cả việc mã nguồn được tạo bởi hãng thứ ba hay bất

cứ hãng nào mà tuân thủ theo kiến trúc NET

▪ Để cung cấp một môi trường thực thi mã nguồn mà loại bỏ được những lỗi thực hiện các script hay môi trường thông dịch

▪ Để làm cho những người phát triển có kinh nghiệm vững chắc có thể nắm vững nhiều kiểu ứng dụng khác nhau Như là từ những ứng dụng trên nền Windows đến những ứng dụng dựa trên web

Để xây dựng tất cả các thông tin dựa triên tiêu chuẩn công nghiệp để đảm bảo rằng

mã nguồn trên NET có thể tích hợp với bất cứ mã nguồn khác

Trang 10

1.4 Tạo một ứng dụng Windows form

Bước 1: Khởi động VS2008 và chọn Fille  New Project …

Bước 2: Chọn Ứng dụng dạng Windows Forms Application, chọn nơi lữu trữ Project (xem hình) nhấn OK

1.5 Lớp Control

C# (các công cụ của bộ VS nói riêng) bao gồm một tập các điều khiển được MS xây dựng sẵn Một số điều khiển được hiển thị trong công cụ Toolbox của VS

Trang 11

Ngoài ra để lấy các điều khiển chưa được hiển thị trên công cụ Toolbox chúng ta

có thể lấy ra bằng cách: Tools  Choose Toolbox Items…

Trang 12

AcceptButton Giá trị mà thuộc tính này nhận là tên của một Button trên

Form (Nếu Form có chứa button) Khi đó nếu bạn nhấn

phím Enter thì sự kiện Click của Button mà bạn chọn

được thực thi mà không cần nhấn chuột vào Button đó

- True: Không cho phép thay đổi kích thước Form mà che

đi các điều khiển khác chứa trên Form

- False: Ngược lại

Trang 13

AutoSizeMode Cho phép thay đổi kích thước của Form hay không? (Khi

di chuyển chuột vào các mép của Form mà hiện nên biểu

tượng ↔ là cho phép) Và nhận một trong hai giá trị

- GrowOnly: Cho phép

- và GrowAndShrink: Không cho phép

CancelButton Giá trị mà thuộc tính này nhận là tên của một Button trên

Form (Nếu Form có chứa button) Khi đó nếu bạn nhấn

phím ESC thì sự kiện Click của Button mà bạn chọn

được thực thi mà không cần nhấn chuột vào Button đó (tương tự như thuộc tính AcceptButton )

- True: Cho phép các các nút: MaximizeBox, MinimizeBox, Close trên Titlebar xuất hiện

- False: Không Cho phép các các nút: MaximizeBox, MinimizeBox, Close trên Titlebar xuất hiện (Khi đó các thuộc tính MaximizeBox, MinimizeBox của Form cũng mất đi)

khiển được thêm vào Form sẽ có thuộc tính Font giống như thuộc tính Font của Form)

chữ FormBorderStyle Chọn Style cho Form (Có 7 lựa chọn khác nhau)

- True: Cho phép xuất hiện Buton có dấu ? trên Titlebar

Trang 14

(Với điều kiện: hai thuộc tính MaximizeBox, MaximizeBox phải đặt giá trị là False)

- False: Ngược lại

→ Thuộc tính này sẽ hay đi kèm với điều khiển

HelpProvider về sau

Icon Chọn một Icon (có đuôi mở rộng là ico) trên máy tính

của bạn thay cho Icon mặc định của Form mà VS tạo ra

- True: Cho phép các sự kiện về bàn phím của Form (KeyUp, KeyDown, KeyPress… của Form) có hiệu lực

- False: Ngược lại

- True: Cho phép nút MaximizeBox trên Titlebar có hiệu lực

- False: Ngược lại

- True: Cho phép xuất hiện Icon của Form

- False: Không cho phép xuất hiện Icon của Form

- True: Cho phép hiện Form dưới khay Taskbar

- False: Ngược lại StartPosition Vị trí hiển thị của Form so với màn hình hệ thống hay

Form cha (5 lựa chọn khác nhau)

Trang 15

Text Giá trị Text của Form

nút Run của VS) (Có 3 lựa chọn khác nhau: Ẩn dưới

khay Taskbar, mở rộng hết màn hình…)

1.6.3 Một số sự kiện thường dùng

AutoSizeChanged Xảy ra khi thuộc tính Autosize của Form chuyển từ True

→ False hay ngược lại là False → True

BackColorChanged Xảy ra khi thuộc tính BackColor của Form thay đổi

thuộc Form

DoubleClick Xảy ra khi người dùng DoubleClick vào vùng làm việc

của Form

ForeColorChanged Xảy ra khi thuộc tính ForeColor của Form có sự thay đổi

FormClosed Xảy ra khi Form đã đóng (Nhấn vào nút X màu đỏ trên

Titlebar) FormClosing Xảy ra khi Form đang đóng (2 sự kiện FormClosed và

FormClosing thường dùng trong lập trình CSDL: khi xảy

ra sự kiện này thì đóng kết nối CSDL) KeyDown Xảy ra khi người dùng nhấn một phím hay một tố hợp

Trang 16

phím (tùy thuộc vào xử lý của chúng ta)

Trái, giữa, phải) MouseDoubleClick Xảy ra khi người dùng DoubleClick chuột vào một vùng

làm việc của Form(một trong 3 lựa chọn: Trái, giữa, phải)

Form MouseLeave Xảy ra khi di chuyển chuột ra khỏi vùng làm việc của

Form

Form (nếu Form có chứa một điều khiển nào đó, khi di chuyển chuột trên điều khiển này thì không xảy ra sự kiện

MouseMove của Form)

MouseUp Xảy ra khi người dùng nhả nhấn chuột (có thể là chuột

trái, chuột phải, chuột giữa - chuột cuộn) Move Xảy ra khi di chuyển Form (có sự thay đổi vị trí của

Form) StyleChanged Xảy ra khi thuộc tính FormBorderStyle của Form thay

đổi

1.6.4 Minh họa

Trang 17

1.6.4.1 Sự kiện FormClosed

//Sự kiện FormClosed - Sự kiện này được gọi khi Form đã đóng

private void frmForm_FormClosed(object sender, FormClosedEventArgs e) {

MessageBox.Show("Sự kiện FormClosed được gọi",

"FormClosed",MessageBoxButtons.OK,MessageBoxIcon.Information);

}

1.6.4.2 Sự kiện FormClosing

//Sự kiện FormClosing xảy ra khi Form đang đóng

private void frmForm_FormClosing(object sender, FormClosingEventArgs e) {

if (MessageBox.Show("Bạn có muốn đóng Form lại hay không?",

"FormClosing",

MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)

e.Cancel = false;// Đóng Form lại

//Nếu không chỉ rõ phím nào được nhấn thì khi nhấn bất cứ phím nào

sự kiện KeyPress của Form đều xảy ra

//Chỉ rõ phím nào được nhấn thì phát sinh sự kiện KeyPress làm như sau

if (e.KeyChar = 'a')

MessageBox.Show("Sự kiện KeyPress xảy ra khi bạn nhấn phím a");

Trang 18

//Như Windows Media: Nhấn Ctrl+F để di chuyển bài tiếp theo

if (e.KeyCode == Keys.F && e.Modifiers == Keys.Control) MessageBox.Show("Sự kiện KeyDown được gọi khi bạn nhấn Ctrl + F");

//Chuột nào cũng xảy ra sự kiện MouseClick của Form

//Còn nếu bạn muốn bắt được sự kiện người dùng nhấn chuột TRÁI, PHẢI, hay GIỮA làm thế này

Trang 20

BÀI 2 MỘT SỐ CONTROL TRONG C#

- True: Khi nhấn phím Tab thì con trỏ (Focus) chỉ di chuyển bên trong Textbox (Với điều kiện thuộc tính Multiline=True)

- False: Khi nhấn Tab thì Focus di chuyển qua lại giữa các điều khiển trên Form

→ Thuộc tính này hay đặt bằng True trong các ứng dụng soạn thảo văn bản

AutoCompleteCustomSource Ba thuộc tính này ý nghĩa tương tự như của

thuộc tính của điều khiển Combobox AutoCompleteMode

AutoComplete Source

Trang 21

HideSelection Nhận một trong hai giá trị True hay False

- True: Không cho phép các thuộc tính: SelectionStart…có hiệu lực

- False: Ngược lại

Textbox

- True: Cho phép nhập và hiển thị giá trị của Textbox trên nhiều dòng (người dùng có thể nhìn thấy toàn bộ giá trị Text của nó)

- False: Cho phép nhập/hiển thị giá trị của Textbox trên một dòng

PasswordChar Hiển thị giá trị của Textbox dưới dạng các kí

tự mà bạn thay thế (kí tự do người dùng nhập vào: *, # )

ReadOnly

điều kiện thuộc tính Multiline=True mới nhìn thấy thanh cuộn)

TabIndex

- True: có thể Undo lại được (như Word)

- False: Ngược lại

o SelectionStart

o SelectionLength

Trang 22

o ………

Chú ý: Các điều khiển có rất nhiều thuộc tính giống nhau: Anchor, Dock, Font,

ForeColor, Enabled, Visible, TabIndex……Về ý nghĩa các thuộc tính này là giống nhau với tất cả các điều khiển

2.1.2.1 Một số phương thức thường dùng

AppendText Nối một chuỗi (string) vào giá trị Text hiện có của

Textbox Copy

Xử lý phần nội dung bôi đen (như Word) Cut

Paste

2.1.2.2 Một số sự kiện thường dùng

KeyPress Xảy ra khi người dùng nhấn phím trên bàn phím (tất

nhiên Textbox phải đang Focus – Áp dụng sự kiện này để xử lý không cho phép nhập chữ vào Textbox…)

MouseClick Xảy ra khi người dùng Click chuột trên điều khiển

Trang 23

Textbox

TextChanged Xảy ra khi giá trị Text của Texbox (hay gọi giá trị

Textbox) thay đổi

2.1.2.3 Minh họa

Trang 24

2.1.1.1.1 Minh họa thuộc tính Text của Textbox

private void btTextbox_Click(object sender, EventArgs e)

{

//Trước khi gán thuộc tính text

MessageBox.Show("Giá trị textbox trước khi gán: "+ textBox1.Text); //Gán giá trị Text

textBox1.Text = "Chào các bạn";

//Sau khi gán

MessageBox.Show("Giá trị textbox sau khi gán: " + textBox1.Text); }

2.1.1.1.2 Minh họa thuộc tính SelectedText

private void btTextbox_Click(object sender, EventArgs e)

{

//Thuộc tính SelectedText lấy ra một chuỗi mà bạn bôi đen (Chọn) //Bạn hãy bôi đen một vài từ trong Textbox sau đó Click vào Button này sẽ hiển thị

//Message thông báo từ bạn chọn

string str = textBox1.SelectedText;

MessageBox.Show("Từ bạn vừa chọn (bôi đen) là: "+str);

}

2.1.1.1.3 Minh họa thuộc tính SelectionStart và SelectionLength

private void btTextbox_Click(object sender, EventArgs e)

{

//Thuộc tính này dùng trong tìm kiếm rất nhiều

//Thuộc tính SelectionStart: Ví trí bắt đầu Select

//Thuộc tính SelectionLength: Chiều dài của vùng lựa chọn

//Chú ý: Đặt thuộc tính HideSelection=False

//Ví dụ: Tìm kiếm xem giá trị của Textbox có từ nào là chào hay không

Trang 25

Nếu có thì nó tự Bôi đen từ đó

2.1.1.1.4 Minh họa thuộc tính CanUndo và phương thức Undo

private void btTextbox_Click(object sender, EventArgs e)

2.1.1.1.5 Minh họa phương thức Select

private void btTextbox_Click(object sender, EventArgs e)

{

//Cú pháp chung: txtNoiDung.Select(Start, Length);

//Mục đích để lấy về một chuỗi từ từ vị trí nào và chiều dài của chuỗi dược chọn (tất nhiên: bôi đen vùng này)

//-> Phương thức này tương đương với sử dụng 2 thuộc tính SelectionStart

và SelectionLength

//Ví dụ:

txtNoiDung.Select(10, 5);

Trang 26

//<-> 2 câu lệnh này

//textBox1.SelectionStart = 10;

//textBox1.SelectionStart = 5;

}

2.1.1.1.6 Minh họa phương thức AppendText

private void btTextbox_Click(object sender, EventArgs e)

2.1.1.1.7 Xử lý chỉ cho phép Textbox nhập số (sự kiện KeyPress của Textbox) – Cách 1

private void txtNoiDung_KeyPress(object sender, KeyPressEventArgs e) {

if (e.KeyChar >= '0' && e.KeyChar <= '9')

e.Handled = false;//Handled: Được xử lý

else

e.Handled = true;

}

2.1.1.1.8 Xử lý chỉ cho phép Textbox nhập số (sự kiện KeyPress của Textbox) – Cách 2

private void txtNoiDung_KeyPress(object sender, KeyPressEventArgs e)

{

if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))

Trang 27

→ Sử dụng Textbox viết chương trình soạn thảo văn bản đơn giản (tham khảo Notepad)

SelectedText Lấy về chuỗi được lựa chọn (chuỗi mà chúng ta

bôi đen) SelectionStart, SelectionLength Lấy về một chuỗi với vị trí bắt đầu và chiều dài,

hai thuộc tính này thường đi với nhau SelectionFont Lấy thông tin về Font của một chuỗi được lựa

chọn (bôi đen)

Trang 28

SelectionColor Lấy thông tin về Color của chuỗi được bôi đen

được lựa chọn

- True: có thể Undo lại được (như Word)

- False: Ngược lại

2.2.2.1 Một số phương thức thường dùng

Cut

Paste

TextBox)

Undo

Trang 29

2.2.2.2 Minh họa

Giả sử có một Textbox có tên là richTextBox1 Chúng ta sẽ minh họa RitchTextbox qua sự kiện click của một Button có tên là btrichTextBox

Trang 30

Việc sử dụng các thuộc tính SelectedText, SelectionStart, SelectionLength, CanUndo, CanRedo tương tự như TextBox (Xem lại Code phần điều khiển TextBox) 2.2.2.2.1 Minh họa thuộc tính SelectionFont

private void btRichTextBox_Click(object sender, EventArgs e)

{

//Sử dụng thuộc tính Font có thể lấy thông tin về Font của vùng Bôi đen (không phải tất cả)

//Hoặc: Thay đổi Font của vùng bôi đen

//Trước hết lấy thông tin về Font

//InfoFont bao gồm tát cả các thông tin: Style, Tên Font

string InfoFont = richTextBox1.SelectionFont.ToString();

MessageBox.Show(InfoFont);

//Chỉ lấy tên Font của vùng Bôi đen

string FontName = richTextBox1.SelectionFont.Name.ToString();

MessageBox.Show("Vùng bôi đen có Font là: " + FontName);

//Chỉ lấy Size của vùng Bôi đen

string FontSize = richTextBox1.SelectionFont.Size.ToString();

MessageBox.Show("Vùng bôi đen có Size là: " + FontSize);

Trang 31

//Còn nếu muốn đổi Font cho toàn bộ RichTextBox thì dùng câu lệnh này

//richTextBox1.Font = fo.Font;

}

}

2.2.2.2.3 Minh họa thuộc tính SelectionColor

private void btRichTextBox_Click(object sender, EventArgs e)

{

//Thuộc tính này lấy về màu của vùng được lựa chọn

//Tương tự như thuộc tính SelectionFont

string Color = richTextBox1.SelectionColor.Name.ToString();

MessageBox.Show(Color);

}

2.2.2.2.4 Đặt màu cho vùng bôi đen thông qua thuộc tính SelectionColor

private void btRichTextBox_Click(object sender, EventArgs e)

2.2.2.2.5 Việc sử dụng các phương thức: AppendText, Select, SelectAll, Undo, Redo,

Undo tương tự như Textbox

2.2.2.2.6 Minh họa sử dụng phương thưc LoadFile

private void btRichTextBox_Click(object sender, EventArgs e)

Trang 32

{

//Load nội dung File C:\NET.rtf vào RitchTextBox

//Tất nhiên ổ C của bạn phải tồn tại file C:\NET.rtf

richTextBox1.LoadFile(@"C:\NET.rtf");

//-> Thường sử dụng cùng với điều khiển OpenFileDialog để mở một file trên máy

}

2.2.2.2.7 Minh họa sử dụng phương thưc SavaFile

private void btRichTextBox_Click(object sender, EventArgs e)

2.2.2.2.8 Minh họa Phương thức Find

private void btRichTextBox_Click(object sender, EventArgs e)

richTextBox1.Find("chào", 0, 100, RichTextBoxFinds.MatchCase);

}

→ Sử dụng RitchTextBox viết chương trình soạn thảo văn bản đơn giản(tham khảo WordPad)

Trang 33

2.3 DataGridView

2.3.1 Chức năng

Điều khiển DataGridView dùng để hiển thị dữ liệu

2.3.2 Một số khái niệm liên quan đến DataGridView

Hình 1: Ví dụ về DataGirdView

Hình 2: Khái niệm Columns trong DataGridView

Trang 34

Hình 3: Khái niệm về Rows trong DataGridView

Hình 4: Khái niệm về Cells trong DataGridView

→ DataGridView ≡ Mảng 2 chiều

→ Có 2 cách để truy xuất đến một ô (để lấy giá trị) trong DataGridView (các bạn chú ý hai câu lệnh này)

Cách 1: Tên_DataGridView[Chỉ_số_cột, Chỉ_số_hàng].Value

Trang 35

Cách 2: Tên_DataGridView.Rows[Chỉ_số_hàng].Cells[Chỉ_số_Cột].Value

Ví dụ:

Có một DataGridView như sau:

Chúng ta muốn lấy giá trị của một ô bôi đen chúng ta có thể sử dụng câu lệnh sau (tên của DataGridView là: dgSinhVienTK4):

string str = dgSinhVienTK4[0, 2].Value.ToString();

DataGridView

Trang 36

ColumnHeadersBorderStyle

ColumnHeadersHeight

ColumnHeadersVisible Nhận một trong hai giá trị True hay False

- True: Cho phép hiển thị tiêu đề các cột

- False: Không cho phép hiển thị tiêu để các 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 một cột có thể là: Cột các Button, Cột các Checkbox…

DataMember Chọn cơ sở dữ liệu để hiển thị nên DataGridView

DataSource Chọn nguồn dữ liệu cho DataGridView (hai thuộc

tính DataSource và DataMember hay đi với nhau)

cách nhau bởi lưới)

- True: Cho phép thay đổi giá trị các các phần

tử (các ô hay các Cell)

- False: không cho phép thay đổi giá trị các phần tử

RowHeadersBorderStyle Chọn kiểu viền cho các Hàng (Rows)

- True: Cho phép hiển thị Headers của hàng(Cột đầu tiên ở mép ngoài bên trái)

- False: Ngược lại

Trang 38

Giả sử chúng ta có một form có tên: frmDataGridView Trên đó có chứa một số

điều khiển sau:

- Điều khiển DataGridView có tên dataGridView1(Chúng ta để tất cả các

thuộc tính của dataGridView1với giá trị mặc định)

- Button btCreate: minh họa việc tạo DataGridView với số hàng và số cột

xác định

- Button btRemove: Minh họa xóa một cột, một hàng trong DataGridView

- Button btGet: Minh họa việc lấy số hàng và số cột trong DataGridView

- Button btAddCombobox: Minh họa việc Add một cột là Combobox vào

DataGridView

- Button btAddCheck: Minh họa việc Add một cột là Checkbox vào

DataGridView

Giao diện của chương trình như sau:

Chúng ta sẽ minh họa sử dụng DataGridView qua sự kiện Click của các button

trên

2.3.1.1.1 Tạo các cột trong DataGridView (bằng Code)

//Sự kiện Load của Form

private void frmDataGridView_Load(object sender, EventArgs e)

{

//Đặt thuộc tính cho DataGridView thông qua mã lệnh

DataGridViewAutoSizeColumnsMode.Fill;//Chú ý thuộc tính này

//Để thêm các cột vào DataGridView bạn có thể thêm thông qua thuộc

tính COLUMNS trên hộp thoại Properties

Trang 39

//Hoặc bạn có thể thêm bằng Code

dataGridView1.Columns.Add("clName", "Họ và Tên");

dataGridView1.Columns.Add("clQueQuan", "Quê quán");

dataGridView1.Columns.Add("clLop", "Lớp");

dataGridView1.Columns.Add("clNgaySinh", "Ngay sinh");

//Thêm một hàng mới vào (hàng mới này chưa có dữ liệu gì)

dataGridView1.Rows.Add();

//Đưa dữ liệu vào hàng mới vừa tạo ra (Đặt giá trị cho một ô) -> Các bạn chú ý có hai cách như thế này

dataGridView1[0, 0].Value = "Nguyễn Văn Hải";

dataGridView1.Rows[0].Cells[1].Value = "Hưng Yên";

//Sự kiện Load của Form

private void btCreate_Click(object sender, EventArgs e)

{

Trang 40

//Đặt số hàng và số cột cho DataGridView (Ví dụ: thiết kế trong chơi cờ Caro)

//Ví dụ: Tạo một DataGridView với 50 hàng và 50 Cột

dataGridView1.ColumnCount = 50; //Chú ý thuộc tính này

dataGridView1.RowCount = 50; //Chú ý thuộc tính này

} //Đã xong rồi Giờ thì bạn chạy xem nào

2.3.1.1.3 Xóa một hàng (hay 1 cột, hay tất cả các hàng các cột) của DataGridView

private void brRemove_Click(object sender, EventArgs e)

{

//Tập các hàng, các cột trong DataGridView là một Collection

//Nên nó có đầy đủ các thuộc tính và phương thức của một Collection

//Xóa hàng thứ 1 (có chỉ số là 0)

dataGridView1.Rows.RemoveAt(0); //Xóa tất cả các hàng: dataGridView1.Rows.Clear();

//Tất nhiên nếu chúng ta có 2 hàng thì chúng ta không thể thực hiện câu lệnh: dataGridView1.Rows.RemoveAt(2);

//Xóa cột thứ 2 (có chỉ số là 1)

dataGridView1.Columns.RemoveAt(1); //Xóa tất cả các Cột: dataGridView1.Columns.Clear();

}

Ngày đăng: 24/10/2017, 15:51

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w