ControlBox Nhận một trong hai giá trị True hay False - 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: MaximizeBo
Trang 1MỤC LỤC
MỤC LỤC 1
CHƯƠNG 1: KIẾN TRÚC CỦA NET 3
1.1 Môi trường thực thi ngôn ngữ chung – CLR 3
1.2 Ngôn ngữ trung gian - IL 4
1.3 Giới thiệu về Net Framework 5
CHƯƠNG 2: LẬP TRÌNH WINDOWS FORMS 7
2.1 Tạo một ứng dụng Windows form 7
2.2 Lớp Control 8
2.3 Form 8
2.3.1 Chức năng 8
2.3.2 Một số thuộc tính thường dùng 8
2.3.3 Một số sự kiện thường dùng 10
2.4 Một số control 16
2.4.1 Textbox 16
2.4.2 RichTextBox 25
2.4.3 DataGridView 32
2.4.4 ListView 56
2.5 User Control 78
2.6 Thao tác với file XML 78
2.7 Thao tác với Registry 83
CHƯƠNG 3: LẬP TRÌNH CƠ SỞ DỮ LIỆU 86
3.1 Giới thiệu ADO.NET 86
3.2 Các mô hình thao tác với CSDL 87
Trang 23.3 Kết nối đến nguồn dữ liệu bằng đối tượng Connection 88
3.4 Thực thi câu lệnh SQL bằng đối tượng Command 93
3.5 Truy vấn và nhận về dữ liệu với DataReader 101
3.6 Cập nhật và truy vấn dữ liệu với đối tượng DataAdapter 104
3.7 Mô hình DataSet 107
3.8 Đối tượng Parameter 109
3.9 Ràng buộc dữ liệu với các điều khiển 113
3.10 Sử dụng DataView trong sắp xếp và tìm kiếm dữ liệu 113
3.11 LINQ 113
CHƯƠNG 4: CRYSTAL REPORT 114
4.1 Thiết kế báo cáo với Crystal Report 114
4.2 Nạp và hiển thị Report trong chương trình 122
4.3 Thiết kế Report động 123
Trang 3CHƯƠNG 1: KIẾN TRÚC CỦA NET
Như đã đề cập thì CLR thực hiện quản lý bộ nhớ, quản lý thực thi tiểutrì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ý đượccấp những mức độ quyền hạn khác nhau, phụ thuộc vào nhiều yếu tố nguyênthủy của chúng như: liên quan đến Internet, hệ thống mạng trong nhà máy, haymộ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 truycậ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 đó, đặctí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ệcthự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ệcthự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 nhaugiữ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 racá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,
Trang 4tự động này còn giải quyết hai lỗi chung của ứng dụng: thiếu bộ nhớ và thamchiếu bộ nhớ không hợp lệ.
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ạigiữa mã nguồn được quản lý và mã nguồn không được quản lý cho phép ngườiphá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 cungcấp nhiều các tiêu chuẩn dịch vụ runtime, nhưng mã nguồn được quản lý khôngbao 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ânmả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ấtcủ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áctí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 đặctí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 51.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 ứngdụ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ữngchắc, trong đó mã nguồn đối tượng được lưu trữ và thực thi mộtcách cục bộ Thực thi cục bộ nhưng được phân tán trên Internet, hoặcthực thi từ xa
Để cung cấp một môi trường thực thi mã nguồn mà tối thiểu đượcviệ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ệcthực thi an toàn mã nguồn, bao gồm cả việc mã nguồn được tạo bởihã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ỏ đượcnhữ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ụngtrên nền Windows đến những ứng dụng dựa trên web
Trang 6Để xây dựng tất cả các thông tin dựa triên tiêu chuẩn công nghiệp để đảmbả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 7CHƯƠNG 2: LẬP TRÌNH WINDOWS FORMS
2.1 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.
Trang 8AcceptButton 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 đó
Autosize Nhận một trong hai giá trị True hay False
- 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ạiAutoSizeMode 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
BackColor Chọn màu nền cho Form
BackGroundImage Chọn ảnh làm nền cho Form
Trang 9CancelButton 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 )
ControlBox Nhận một trong hai giá trị True hay False
- 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ủaForm cũng mất đi)
Font Chọn kiểu Font chữ cho Form (Khi đó tất cả các điều
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)
ForeColor Tương tự như thuộc tính Font nhưng áp dụng đối với
màu chữFormBorderStyle Chọn Style cho Form (Có 7 lựa chọn khác nhau).HelpButton Nhận một trong hai giá trị True hay False
- True: Cho phép xuất hiện Buton có dấu ? trên
Titlebar (Với điều kiện: hai thuộc tínhMaximizeBox, 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
Trang 10KeyPreview Nhận một trong hai giá trị True hay False
- 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
MaximizeBox Nhận một trong hai giá trị True hay False
- True: Cho phép nút MaximizeBox trên Titlebar có
hiệu lực
- False: Ngược lại
MaximizeBox Tương tự như thuộc tính MaximizeBox
ShowIcon Nhận một trong hai giá trị True hay False
- 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
ShowInTaskbar Nhận một trong hai giá trị True hay False
- 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)
WindowState Trạng thái hiển thị của Form khi chạy (Khi bạn nhấn
vào 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…)
2.3.3 Một số sự kiện thường dùng
Trang 11AutoSizeChanged 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
Click Xảy ra khi người dùng Click chuột vào vùng làm việc
thuộc FormControlAdded Xảy ra khi một điều khiển được Add vào Form
ControlRemoved Xảy ra khi một điều khiển bị xóa khỏi Form
CursorChanged Xảy ra khi thuộc tính Cursor của Form thay đổi
DoubleClick Xảy ra khi người dùng DoubleClick vào vùng làm việc
của FormFontChanged Xảy ra khi thuộc tính Font của Form có sự thay đổi
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
phím (tùy thuộc vào xử lý của chúng ta)KeyPress Xảy ra khi người dùng nhấn một phím
KeyUp Xảy ra khi người dùng nhả một phím.
MouseClick Xảy ra khi người dùng nhấn chuột (một trong 3 lựa
chọn: Trái, giữa, phải)
Trang 12MouseDoubleClick 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)
MouseDown Xảy ra khi người dùng nhấn chuột
MouseHover Xảy ra khi người dùng di chuyển vào các vùng làm việc
FormMouseLeave Xảy ra khi di chuyển chuột ra khỏi vùng làm việc của
FormMouseMove Xảy ra khi di chuyển chuột trên một vùng làm việc
thuộc 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
TextChanged Xảy ra khi thuộc tính Text của Form thay đổi.
2.3.4 Minh họa
Trang 132.3.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); }
//Sự kiện FormClosing xảy ra khi Form đang đóng
private void frmForm_FormClosing( object sender, FormClosingEventArgs e)
{
MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
else
}
Trang 14//Như Windows Media: Nhấn Ctrl+F để di chuyển bài tiếp theo
Trang 15if (e.KeyCode == Keys.F && e.Modifiers == Keys.Control) MessageBox.Show( "Sự kiện KeyDown được gọi khi bạn nhấn Ctrl + F" );
else if (e.Button==MouseButtons.Right) MessageBox.Show( "Sự kiện MouseClick xảy ra khi bạn Click chuột PHẢI" );
}
//Các sự kiện MouseDoubleClick, MouseDown, MouseUp Xử lý tương tự
Trang 16AcceptsTab Nhận một trong hai giá trị True hay False
- True: Khi nhấn phím Tab thì con trỏ (Focus)
chỉ di chuyển bên trong Textbox (Với điềukiệ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
Anchor Vị trí neo đậu của Textbox trên Form
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 ComboboxAutoCompleteMode
AutoComplete Source
BorderStyle Chọn kiểu đường viền cho Textbox
ContextMenuStrip Chọn Menu ngữ cảnh khi nhấn chuột phải vào
TextboxDock Vị trí bám dính và điền đầy của Textbox với
Form
Trang 17HideSelection 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
MaxLenght Số lượng kí tự lớn nhất cho phép nhập vào
TextboxMultiline Nhận một trong hai giá trị True hay False
- 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òngPasswordChar Hiển thị giá trị của Textbox dưới dạng các kí tự
mà bạn thay thế (kí tự do người dùng nhập vào:
*, # )ReadOnly
ScrollBars Cho phép hiển thị thanh trượt hay không? (Với
điều kiện thuộc tính Multiline=True mới nhìn
thấy thanh cuộn)TabIndex
Visible Cho phép Textbox hiển thị hay không?
CanUndo Trả lại hai giá trị True/False
- True: có thể Undo lại được (như Word)
- False: Ngược lại
Các thuộc tính SelectionText o SelectedText
o SelectionStart
o SelectionLength
Trang 18o ……….
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.4.1.3 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
TextboxCopy
Xử lý phần nội dung bôi đen (như Word)Cut
Paste
Focus Chuyển Focus (con trỏ) vào TextBox
Select Lấy ra một chuỗi trong Textbox (xem Code)
SelectAll Lấy tất cả giá trị của Textbox
2.4.1.4 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 19TextboxTextChanged Xảy ra khi giá trị Text của Texbox (hay gọi giá trị
Textbox) thay đổi
2.4.1.5 Minh họa
Trang 202.4.1.5.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.4.1.5.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);
Trang 212.4.1.5.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 Nếu có thì nó tự Bôi đen từ đó string str = "chào" ;
int i;
i = textBox1.Text.LastIndexOf(str);
if (i >= 0) {
textBox1.SelectionStart = i;
textBox1.SelectionLength = str.Length;
} }
Trang 222.4.1.5.4 Minh họa thuộc tính CanUndo và phương thức Undo
private void btTextbox_Click( object sender, EventArgs e)
2.4.1.5.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);
//<-> 2 câu lệnh này //textBox1.SelectionStart = 10;
Trang 23//textBox1.SelectionStart = 5;
}
2.4.1.5.6 Minh họa phương thức AppendText
private void btTextbox_Click( object sender, EventArgs e)
{
//Giá trị Textbox trước khi gọi phương thức MessageBox.Show( "Trước: " +textBox1.Text);
//Gọi phương thức
//Giá trị Textbox trước khi gọi phương thức MessageBox.Show( "Sau: " + textBox1.Text);
}
2.4.1.5.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' )
Trang 24}
2.4.1.5.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)
}
→ 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)
Trang 25SelectedText 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 nhauSelectionFont Lấy thông tin về Font của một chuỗi được lựa chọn
(bôi đen)
SelectionColor Lấy thông tin về Color của chuỗi được bôi đen
được lựa chọn
CanUndo Trả lại hai giá trị True/False
- True: có thể Undo lại được (như Word)
- False: Ngược lại
CanRedo Tương tự như thuộc tính CanUndo
Trang 262.4.2.3 Một số phương thức thường dùng
AppendText Nối một chuỗi vào RitchTextBox
Copy Xử lý phần nội dung bôi đen (như Word)
Cut
Paste
Find Tìm kiếm một xâu trong RitchTextBox
LoadFile Đọc nội dung một file vào RitchTextBox
SaveFile Ghi nội dung của RitchTextBox ra file
Select Lấy ra một chuỗi trong RitchTextBox (tương tự
TextBox)SelectAll Lấy tất cả nội dung của RitchTextBox
Undo
2.4.2.4 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 27Việ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.4.2.4.1 Minh họa thuộc tính SelectionFont
private void btRichTextBox_Click( object sender, EventArgs e)
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 282.4.2.4.2 Chọn Font cho vùng bôi đen thông qua thuộc tính SelectionFont (Chỉ vùng bôi đen)
private void btRichTextBox_Click( object sender, EventArgs e)
//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.4.2.4.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
Trang 29string Color = richTextBox1.SelectionColor.Name.ToString();
MessageBox.Show(Color);
}
2.4.2.4.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.4.2.4.5 Việc sử dụng các phương thức: AppendText, Select, SelectAll, Undo, Redo, Undo tương tự như Textbox
2.4.2.4.6 Minh họa sử dụng phương thưc LoadFile
private void btRichTextBox_Click( object sender, EventArgs e)
{
Trang 30//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
//-> Thường sử dụng cùng với điều khiển OpenFileDialog để mở một file trên máy }
2.4.2.4.7 Minh họa sử dụng phương thưc SavaFile
private void btRichTextBox_Click( object sender, EventArgs e)
{
//Lưu nội dung RitchTextBox ra file richTextBox1.SaveFile( @"C:\File.rtf" ) //-> Thường sử dụng cùng với điều khiển SaveFileDialog lưu file vào một nơi bất kì trên máy }
2.4.2.4.8 Minh họa Phương thức Find
private void btRichTextBox_Click( object sender, EventArgs e)
{
//Tìm kiếm một chuỗi trong RichTextBox -> nếu có thì bôi đen kết quả tìm thấy //Chú ý: Đặt thuộc tính HideSelection=False
//rtfNoiDung.Find("Chào", 0, 100, RichTextBoxFinds.Reverse);
Trang 31//-> Ứng dụng trong tìm kiếm văn bản
}
→ 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 322.4.3 DataGridView
2.4.3.1 Chức năng
Điều khiển DataGridView dùng để hiển thị dữ liệu
2.4.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 33Hì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ácbạ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 34Cá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âulệnh sau (tên của DataGridView là: dgSinhVienTK4):
string str = dgSinhVienTK4[0, 2].Value.ToString();
nhau)BackGroundColor Chọn mầu nền cho DataGridView
BorderStyle Đặt kiểu đường viền ngoài bao quanh cho
DataGridView
Trang 35CellBorderStyle Đặt đường viền cho các ô
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)
GridColor Chọn màu cho lưới (các hàng, các cột được ngăn
cách nhau bởi lưới)MultiSelect Cho phép/Không cho phép chọn nhiều dòng?ReadOnly Nhận một trong hai giá trị True hay False
- 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)
RowHeaderVisible Nhận một trong hai giá trị True hay False
- 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)
Trang 362.4.3.4 Một số sự kiện thường dùng
CellClick Xảy ra khi người dùng nhấn chọn một ô bất kì nào đó
trên DataGridView (tất nhiên DataGridView phải có dữliệu)
Chú ý: Trong DataGridView thì khái niệm Ô ≡ Cell
………
2.4.3.5 Minh họa
Trang 37Giả 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:
giá trị mặc định)
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.
Trang 382.4.3.5.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
//Để 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
//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
Trang 39} //Hết
→ sau khi chạy chương trình: form frmDataGridView sẽ có kết quả như sau:
2.4.3.5.2 Đặt số hàng và số cột cho DataGridView
//Sự kiện Load của Form
private void btCreate_Click( object sender, EventArgs e)
Trang 40dataGridView1.RowCount = 50;//Chú ý thuộc tính này //Thiết lập độ rộng cho các Ô
for ( int i = 0; i < 50; i++) {
dataGridView1.Columns[i].Width = 15;
dataGridView1.Rows[i].Height = 15;
} } //Đã xong rồi Giờ thì bạn chạy xem nào
2.4.3.5.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)
//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);