BÀI I: TỔNG QUAN Mục tiêu: Trong bài này, Anh/Chị cần đạt được những mục tiêu sau: 1. Hiểu được khái niệm về Lập trình Hướng sự kiện 2. Hiểu được kiến trúc tổng quát của .NET Framework 3. Biết lập trình các bài toán cơ bản với ngôn ngữ Visual C# 4. Hiểu biết về bài toán ví dụ dành cho cả môn học Nội dung: I. TỔNG QUAN 1. Sự kiện (event) là gì? Sự kiện là những gì (tình huống) sẽ xảy ra ở những vị trí và thời điểm có thể dự đoán được bởi những tác động của con người hoặc các yếu tố khác Ví dụ: - Mưa rơi xuống sông à? - Nước sông tràn bờ à ? - Người lái xe nhấn phanh à? 2. Xử lý (phản ứng với) sự kiện - Mỗi sự kiện xảy ra sẽ thay đổi trạng thái hiện tại của môi trường - Cần có những phản ứng thích hợp với mỗi thay đổi đó (với mỗi sự kiện)
Trang 1BÀI I: TỔNG QUAN
Mục tiêu:
Trong bài này, Anh/Chị cần đạt được những mục tiêu sau:
1 Hiểu được khái niệm về Lập trình Hướng sự kiện
2 Hiểu được kiến trúc tổng quát của NET Framework
3 Biết lập trình các bài toán cơ bản với ngôn ngữ Visual C#
4 Hiểu biết về bài toán ví dụ dành cho cả môn học
- Mỗi sự kiện xảy ra sẽ thay đổi trạng thái hiện tại của môi trường
- Cần có những phản ứng thích hợp với mỗi thay đổi đó (với mỗi sự kiện)
3 Lập trình hướng sự kiện
Lập trình hướng sự kiện là phương pháp tạo ra các kịch bản cho các tình huống (sự kiện) được biết trước sẽ xảy ra trên các thành phần/đối tượng của chương trình VD:
- Ngưới dùng click chuột -> ?
- Người dùng ấn Esc -> ?
Với công nghệ ngày nay:
- HĐH cung cấp cho ứng dụng thông tin để biết là có gì (sự kiện nào) đã xảy ra với thành phần nào của ứng dụng
- Ứng dụng tự quyết định (theo kịch bản viết sẵn) sẽ làm gì với sự kiện đã xảy
ra (xử lý sự kiện như thế nào?)
Trang 2Lập trình hướng sự kiện có liên hệ chặt chẽ với lập trình hướng đối tượng
II LẬP TRÌNH VỚI NET FRAMEWORK
1 Cài đặt NET Framework và Visual Studio.NET
- Tải NET Framework 2.0: (free)
Trang 3và code
F7, Shift F7
3 Các thành phần của NET Framework
Common Language Runtime: (Bộ thực thi ngôn ngữ chung)
Base Classes
Trang 4- NET Framework cung cấp một tập hợp các lớp có thứ bậc, có thể mở rộng
và được sử dụng bởi bất cứ ngôn ngữ lập trình nào
- Các lớp cơ sở có thể được sử dụng để:
Xử lý các CTDL như xâu, mảng, danh sách, …
Truy nhập hệ thống file, registry
Trang 5 ASP.NET
o Web Forms: ứng dụng web
o Web Services: các dịch vụ web
4 Cấu trúc 1 tệp chương trình
5 Một số loại Project trong NET Framework
Sử dụng thư viện (namespace)
Phương thức get, set
Phương thức Method 1
Trang 65.1 Console
5.2 Windows Application
Trang 76 Một số ví dụ với ngôn ngữ lập trình C#
6.1 Chương trình “Hello World”
6.2 Chương trình “Tính trung bình cộng 2 số”
Trang 9III BÀI TOÁN VÍ DỤ MÔN HỌC
1 Phát biểu bài toán
Một đơn vị nhập hàng hoá từ nhiều nhà cung cấp khác nhau cần một chương trình để quản lý hàng hoá nhập kho Biết rằng:
- Một nhà cung cấp có thể cung cấp nhiều hàng hoá khác nhau
- Mỗi hàng hoá lại có thể được nhập từ nhiều nhà cung cấp khác nhau
- Trước khi đưa hàng hoá vào kho thì cần lập giấy nhập kho để ghi nhận thời gian nhập, người lập, số lượng nhập kho của từng loại hàng hoá
- Chương trình cần thống kê được hàng hoá nhập theo: Khoảng thời gian, Nhà cung cấp, Loại hàng hoá
Trang 102 Cơ sở dữ liệu
Sơ đồ CSDL của Bài toán quản lý hàng hoá nhập kho
Trang 11Chúc Anh/Chị học tập tốt
TÀI LIỆU THAM KHẢO
1 Bài giảng Lập trình Hướng sự kiện, Nhóm tác giả, Khoa CNTT – Viện Đại học Mở
Hà Nội
2 .NET toàn tập (tập 7: Sổ tay Kỹ thuật Visual C#), Dương Quang Thiện, NXB Tổng hợp Tp Hồ Chí Minh
3 Windows Forms Programming in C#, Chris Sell, Addison-Wesley Professional, 2004
4 Learning C#, Jessie Liberty, O’Reilly, 2002
Trang 12BÀI 2: TRUY CẬP CSDL VỚI ADO.NET
Mục tiêu:
Trong bài này, Anh/Chị cần đạt được những mục tiêu sau:
- Hiểu rõ được khái niệm, mô hình các đối tượng và lợi ích của ADO.NET
- Nắm vững được cách truy xuất CSDL
- Làm quen với các đối tượng của ADO.NET
- Nắm vững các ví dụ của bài học
Nội dung:
I GIỚI THIỆU
1 Đặc điểm chung
- ADO.NET là một tập hợp các lớp (classes) cho phép các ứng dụng trên nền NET
có thể truy xuất thông tin trong các CSDL và các nguồn dữ liệu khác
- ADO.NET cung cấp các phương pháp truy xuất thích hợp với nhiều loại dữ liệu, bao gồm CSDL MS SQL Server, các CSDL tương thích OLEDB, các CSDL phi quan hệ như MS Exchange Server, và các văn bản XML
- ADO.NET làm việc theo mô hình ngắt kết nối với nguồn dữ liệu
2 Lợi ích của ADO.NET
- Mô hình lập trình tương tự như ADO
- Làm việc theo mô hình CSDL ngắt kết nối
- Sẵn có trong NET Framework dễ dàng xây dựng, triển khai ứng dụng
- Hỗ trợ chuyển đổi dễ dàng giữa mô hình CSDL quan hệ và định dạng dữ liệu XML
Trang 133 Mô hình các đối tượng trong ADO.NET
- ADO.NET sử dụng các trình cung cấp dữ liệu (hay còn gọi là các trình điều khiển dữ liệu) NET(.NET Data Providers) để liên kết ứng dụng với nguồn dữ liệu
2 Khai báo các đối tượng ADO.NET cần thiết (Connection, Command, …)
3 Thiết lập các thông số cho Command
Trang 14SqlServer:
Provider=SqlOLEDB.1;
Data Source=<tên|IP DB Server>;
Initial Catalog=<tên Database>;
User ID=<tên truy cập>;
Password=<mật khẩu>;
Provider=SqlOLEDB.1;
Data Source=<tên|IP DB Server>;
Initial Catalog=<tên Database>;
Integrated Security=TRUE|SSPI;
Có thể thay:
Data Source ~ Server
Initial Catalog ~ Database
Tham khảo: www.ConnectionStrings.com
Thông số kết nối nên đặt trong tệp cấu hình (App.Config) của ứng dụng
II Các đối tượng của ADO.NET
Trang 15 CreateCommand() tạo ra đối tượng Command
BeginTransaction(): tạo ra đối tượng Transaction
Dispose():
(có thể sử dụng cấu trúc using (<khai báo đối tượng>){….}
để NET tự huỷ đối tượng ngay sau “}”
VD: Kết nối tới CSDL SqlServer
2 Command
- Dùng để thực hiện các truy vấn với CSDL
- Khởi tạo:
Trang 16 SqlCommand <tênObj>= new SqlCommand(commandText, connection);
SqlCommand <tênObj>= <đối tượng Connection>.CreateCommand();
Trang 17- Chương trình:
Trang 182 Ví dụ II.3.1
Yêu cầu: Thêm dữ liệu vào bảng Nhà cung cấp sử dụng Stored Procedure
- Tạo Stored procedure
Stored Procedure spNhacungcap_Insert
- Lập trình C#
Trang 19- Chương trình:
Trang 20Chúc Anh/Chị học tập tốt!
TÀI LIỆU THAM KHẢO
1 Bài giảng Lập trình Hướng sự kiện, Nhóm tác giả, Khoa CNTT – Viện Đại học
Trang 21BÀI 3: TRUY CẬP CSDL VỚI ADO.NET (TIẾP THEO)
Mục tiêu:
Trong bài này, Anh/Chị cần đạt được những mục tiêu sau:
- Biết cách làm việc với các đối tượng còn lại của ADO.NET:
• Khai báo:
o SqlDataReader <tên Obj> = <Command>.ExecuteReader() ;
• Thuộc tính:
o HasRows: true/false có bản ghi trong reader hay không
o FieldCount: số trường trong reader
o IsClosed : true/false reader đã bị đóng chưa
• Phương thức:
o Read(): true/false đọc 1 bản ghi từ nguồn dữ liệu vào reader, nếu đọc được sẽ trả ra true, ngược lại sẽ trả ra false
Trang 22o Close(): đóng reader
o Get<type>(i): đọc dữ liệu trường thứ i theo kiểu <type>
Có thể truy xuất tới 1 trường trong reader bằng cách <tên reader>[“tên trường”]
• Ví dụ: Hiện danh sách Nhà cung cấp sử dụng DataReader
Trang 23o InsertCommand: Command sẽ dùng để thêm mới bản ghi từ bộ nhớ vào CSDL khi phương thức Update được gọi và có bản ghi mới trong bộ nhớ
o UpdateCommand: Command sẽ dùng để cập nhật bản ghi từ bộ nhớ vào CSDL khi phương thức Update được gọi và có bản ghi cần cập nhật trong bộ nhớ
o DeleteCommand: Command sẽ dùng để xoá bản ghi tương ứng với bản ghi bị xoá trong bộ nhớ vào CSDL khi phương thức Update được gọi và
có bản ghi trong bộ nhớ bị xoá
o DefaultView: trả ra đối tượng DataView thể hiện 1 cách nhìn (View) mặc định về bảng
Phương thức:
o NewRow(): tạo ra 1 DataRow mới theo cấu trúc của bảng
o GetChanges([RowState]): trả ra các bản ghi thỏa mãn theo trạng thái Added/Updated/Deleted
o AcceptChanges(): chấp nhận các thay đổi
o RejectChanges(); từ chối các thay đổi
Trang 24o Select([filter] [,order] [, DataViewRowState]):
lấy ra mảng các DataRow thỏa mãn [filter] theo trạng thái qui định bởi [DataViewRowState] và sắp xếp theo [order]
o ColumnName: Tên trường
o DataType = System.Type.GetType(<tên kiểu dữ liệu trong NET Framework>): kiểu dữ liệu của trường
o DefaultValue: giá trị mặc định cho trường ở bản ghi mới
o Expression: biểu thức tính giá trị cho trường
o MaxLength: độ dài của trường kiểu xâu
o Table: tham chiếu đến DataTable đang chứa DataColumn
o Unique: true|false: xác định tính duy nhất cho dữ liệu trong trường
5 DataRow
Đối tượng đại diện cho 1 bản ghi trong DataTable
Khai báo: DataRow <obj>=new DataRow()
Lưu ý: để tạo mới bản ghi theo cấu trúc 1 DataTable thì ta sử dụng
<DataTable>.NewRow()
Để truy nhập giá trị 1 trường <DataRow>[tên trường]
Thuộc tính:
o HasErrors:true|false: có lỗi trên DataRow không
o RowState: trạng thái của bản ghi (DataRowState enum)
o Table: tham chiếu đến đối tượng DataTable chứa bản ghi
Trang 25Ví dụ: Hiển thị dữ liệu sử dụng DataTable
Stored procedure:
Hàm getHangByNhacungcap
Trang 26Hàm Main
6 DataView
Thể hiện một cách nhìn (view) khác đối với dữ liệu trong DataTable
DataView có thể dùng để:
o Kết gán dữ liệu (DataBind) với các điều khiển
o Sắp xếp, lọc, tìm kiếm, cập nhật và duyệt các bản ghi
Khai báo:
DataView <tênObj>= new DataView([DataTable]);
Thuộc tính:
o Table: DataTable nguồn của DataView
o Sort: biểu thức sắp xếp dữ liệu trong DataView
o RowFilter=<điều kiện lọc bản ghi>
7 DataSet
DataSet là đối tượng quan trọng trong ADO.NET Mô hình của DataSet tương tự như 1 DB trong bộ nhớ (In Memory DB) Trong DataSet có thể có nhiều DataTable (bảng) nằm trong tập hợp Tables Giữa các DataTable, có thể thiết lập quan hệ bằng DataRelation DataSet chỉ chứa dữ liệu, không giữ kết nối (Disconnected DataSource) Dữ liệu được đưa từ CSDL vào DataSet bằng cách sử dụng phương thức Fill của DataAdapter Ta có thể cập nhật (thêm, sửa, xóa) các bản ghi trong các DataTable của DataSet, sau đó cập nhật ngược trở lại CSDL bằng cách gọi phương thức Update của DataAdapter Ngoài ra, DataSet còn cho phép chuyển đổi dữ liệu sang định dạng XML, thích hợp để xây dựng ứng dụng theo mô hình hướng dịch vụ (SOA)
Trang 27• Khai báo:
DataSet <tênObj>=new DataSet([dsName]);
• Thuộc tính:
o Tables: Tập hợp các DataTable
o Relations: tập hợp các quan hệ giữa các bảng
o DataSetName: tên của DataSet
o HasErrors=true/false: có lỗi trong DataSet hay không
• Phương thức:
o HasChanges([DataRowState]): true/false
o GetChanges([DataRowState]), AcceptChanges(), RejectChanges()
o GetXml(): trả lại dữ liệu của DataSet thể hiện ở dạng XML
o WriteXml(fileName): ghi dữ liệu trong DataSet ra dạng XML
o ReadXml(filename): đọc cấu trúc và dữ liệu từ tài liệu xml vào DataSet
Trang 28TÀI LIỆU THAM KHẢO
1 Bài giảng Lập trình Hướng sự kiện, Nhóm tác giả, Khoa CNTT – Viện Đại học
Trang 29BÀI 4: WINDOWS FORM – CÁC ĐIỀU KHIỂN NỘI TẠI
Mục tiêu:
Trong bài này, Anh/Chị cần đạt được những mục tiêu sau:
1 Nắm được các khái niệm về đối tượng điều khiển
2 Sử dụng các điều khiển để thiết kế giao diện ứng dụng
Nội dung:
4.1 Giới thiệu
Windows Form là một phần của Microsoft NET Framework, nó sử dụng các công nghệ mới như: tích hợp tính bảo mật, hướng đối tượng, tốc độ thực thi,… Ngoài ra, Windows Forms hỗ trợ hoàn toàn việc kết nối với dữ liệu XML, hỗ trợ các điều khiển để dễ dàng kết nối dữ liệu thông qua ADO.NET
Với môi trường phát triển ứng dụng Visual Studio NET, nhà phát triển có thể sử dụng bất kỳ ngôn ngữ nào mà NET platform hỗ trợ để tạo các ứng dụng bằng Windows Forms, kể cả VB.NET và C#.NET
Microsoft NET Framework chứa một tập phong phú các lớp dùng để tạo các ứng
System.Windows.Forms Các lớp này có phạm vi từ các phần cơ bản như các lớp TextBox, Button, và MainMenu đến các điều kiểm chuyên biệt như TreeView, LinkLabel, và NotifyIcon Ngoài ra, bạn sẽ tìm thấy tất cả các công cụ cần thiết để quản lý các ứng dụng giao diện đa tài liệu (Multiple Document Interface - MDI), tích hợp việc trợ giúp theo ngữ cảnh, và ngay cả tạo các giao diện người dùng đa ngôn ngữ - tất cả đều không cần nhờ đến sự phức tạp của Win32 API
Windows form cung cấp các lớp điều khiển hỗ trợ lập trình và xử lý dữ liệu trực quan, hầu hết các nhà phát triển C# đều có thể tự nắm bắt nhanh chóng mô hình lập trình Windows Form
4.1.1 Môi trường làm việc trên Visual Studio.NET
a) Giới thiệu VS.NET
Trang 30Visual Studio.NET (VS.NET) là phần mềm dùng để phát triển các ứng dụng trên nền NET, nó có các đặt tính nỗi bật như sau:
Có thể sử dụng bất kỳ ngôn ngữ nào mà NET platform hỗ trợ
Quản lý các thành phần bên trong theo cửa sổ
Cung cấp môi trường thiết kế trực quan giúp người dùng có thể thiết kế giao diện rất dễ dàng
o Hỗ trợ các công cụ mạnh có thể thao tác với database thông qua ADO.NET…
VS.NET quản lý ứng dụng theo kiểu các giải pháp (Solution) và dự án (Project) Project là một ứng dụng xử lý một hệ thống, solution là tổng hợp của các project tạo nên một ứng dụng có thể giải quyết mọi công việc trong hệ thống
b) Các thành phần bên trong môi trường phát triển VS.NET
Giao diện môi trường phát triển winform:
Hình 1 – Cửa sổ làm việc của VS.NET Trong đó:
Solution Explorer: hiển thị tất cả các project, các files theo dạng cây
Toolbox: chứa các điều khiển cơ bản có thể sử dụng trên Webforms và trên Winforms, ngoài ra còn có các điều khiển ActiveX, XML Web services, các
Trang 31 Server Explorer: cung cấp môi trường điều khiển và quản lý các servers nắm ngoài ứng dụng thông qua VS.NET
Class View: mô tả cấu trúc logic của các lớp, các thành phần trong lớp theo dạng cây
Properties: cho phép người sử dụng thiết đặt thuộc tính của các controls, classes và projects
c) Các bước để tạo project
Để tạo một ứng dụng windows form, ta làm theo các bước sau:
Bước 1 Vào New - > Project
Bước 2 Trong cửa sổ New project ta chọn:
Project Types: chọn ngôn ngữ chúng ta sử dụng để xây dựng project
Templates: chọn Windows Forms Application
Name: Gõ vào tên của project
Location: chọn nơi lưu trữ
4.1.2 Tổng quan về đối tượng: thuộc tính, phương thức và sự kiện
Visual Studio cung cấp rất nhiều điều khiển giúp người lập trình dễ dàng triển khai giao diện chương trình Các điều khiển được gom nhóm theo các nhóm chức năng, bao gồm:
Trang 32 Các điều khiển vật chứa
Các điều khiển menu
Các điều khiển dữ liệu
Các thành phần
Các điều khiển hỗ trợ in
Các điều khiển hộp thoại
Mỗi đối tượng điều khiển đều có 3 thành phần cơ bản liên quan, đó là:
Thuộc tính của đối tượng
Sự kiện xảy ra khi có hành động nào đó tác động lên đối tượng
Phương thức - khả năng mà đối tượng có thể làm được
a) Thuộc tính (Properties)
Thuộc tính (Propertiy): Là các đặc điểm quy định lên đối tượng, ví dụ độ cao (height), độ rộng (width), mầu nền (BackColor),…
Mỗi đối tượng ta có thể thay đổi thuộc tính thông qua 2 cách:
Thay đổi khi thiết kế (Design): Nhấp chuột vào đối tượng, nhấn F4 Trong cửa sổ Properties ta chọn thuộc tính của đối tượng và nhập vào giá trị theo
Trang 33 Thay đổi khi chương trình đang được kích hoạt (RunTime): Viết lệnh trong chương trình để gán giá trị cho thuộc tính của đối tượng theo cú pháp:
<Tên_đối_tương>.<Tên_thuộc_tính> = <Giá_trị>
Chú ý: Có một số thuộc tính của đối tượng chỉ có thể thay đổi giá trị tại thời điểm thiết kế chương trình, ví dụ: ScrollBars của TextBox, Style của ComboBox,… Giới thiệu một số thuộc tính chung (Có ở hầu hết các đối tượng):
Name: Tên của đối tượng
Height, Width: Độ cao và độ rộng
Left, Top: Tọa độ lề trái và tọa độ cạnh trên cùng so với đối tượng chứa nó
Font, ForeColor, BackColor: Font chữ, mầu chữ, mầu nền
Enabled: (Yes/No): Quy định có cho hay không cho truy nhập và tác động lên đối tượng
Visible: (Yes/No): Quy định có hay không hiển thị đối tượng
TabIndex: Qui định thứ tự nhận focus khi dịch chuyển bằng phím TAB
b) Phương thức (Methods)
Khái niệm: Khả năng mà đối tượng có thể thực hiện được, ví dụ như khả năng phóng to, thu nhỏ hoặc di chuyển tới vị trí khác của đối tượng, …
Mỗi đối tượng đều có khả năng thực hiện được một số các công việc tương ứng Ví
dụ các đối tượng có thể tự dịch chuyển vị trí tới 1 nơi nào đó trên màn hình (Move),
có thể nhận sự hội tụ của con trỏ văn bản (SetFocus),…
Để gọi phương thức của đối tượng ta sử dụng cú pháp sau:
<Tên_đối_tượng>.<Phương_thức> [Danh sách tham số]
Ví dụ:
textbox1.Focus(): Đưa con trỏ hội tụ vào đối tượng có tên Text1
Trang 34Giới thiệu 1 số sự kiện:
Click: Sự kiện xảy ra khi ta click chuột trái lên đối tượng
Change: Xảy ra khi ta thay đổi nội dung (giá trị) của đối tượng
MouseMove: Xảy ra khi ta di chuyển con chuột trên đối tượng
4.1.3 Kiến trúc (Architecture) của Windows Forms
Trong mô hình cây thừa kế các lớp đều thừa kế từ lớp Object Dưới đây là danh sách các lớp mà lớp form kế thừa:
Trang 35Object Lớp cơ sở đầu trong NET, superclass cao nhất từ đó sinh ra con
cháu
MarshalByRefObject Cung cấp các code cần thiết để quản lý vòng đời của objects
Component Cung cấp sự gây dựng căn bản của IComponent interface và cho
phép các chương trình khác nhau dùng chung một object
Control
Đây là base class của mọi component dùng để hiển thị Nó hỗ trợ những khả năng liên hệ đến vóc dáng và công tác hiển thị từ Show, BringtoFront, Font, Color cho đến Dock, Anchor Ngoài
ra nó còn cung cấp các Events của keyboard, mouse và có method WndProc để cho ta truy cập các thông điệp của Windows
ScrollableControl Cung cấp chức năng tự động cuốn khi có chứa bên trong một
control cần thêm chỗ để hiển thị
ContainerControl Cho phép một component chứa các controls khác
Form Cửa sổ chính của một chương trình
4.2 Giới thiệu các điều khiển nội tại cơ bản
4.2.1 Những điểm căn bản của Windows Forms
Trong các bài học và thí dụ trước đây ta đã nói qua, bây giờ ta tóm tắc những điểm căn bản của Windows Forms:
Một Windows Form thật sự là một class Trong NET không có từ đặc biệt như "form module" để dùng cho nó
Tất cả mọi form đều thừa kế từ class System.Windows.Forms.Form
Tất cả các đối tượng kiểu form đều phải được khai báo và khởi tạo tường minh nếu ta muốn sử dụng (load)
Trang 36 Giống như tất cả các classes trong NET Framework, Windows Forms có các hàm tạo (constructors) và hủy bỏ (destructors)
Các sự kiện (events) được xử lý bằng nhiều cách và rất linh động Một sự kiện có thể được xử lý bởi nhiều điều khiển (control) cùng một lúc và mỗi điều khiển có một cách xử lý khác nhau Ngược lại, nhiều sự kiện khác nhau
có thể được xử lý bằng một Event Handler duy nhất
Điểu khiển (control): là các đối tượng nằm trong Form Mỗi điều khiển có một tập các thuộc tính (property), phương thức (method), sự kiện (event) cho những mục đích riêng
4.2.2 Làm việc với các điều khiển nội tại thường dùng
4.2.2.1 Form
Form là đối tượng cửa sổ không thể thiếu trong môi trường Windows Form được dùng để chứa các đối tượng khác như nút lệnh (Button), hộp nhập văn bản (TextBox),…
Phân loại:
Single Document Interface (SDI):
o Chỉ hỗ trợ một document hoặc một cửa sổ tại một thời điểm
o Dạng ứng dụng như NotePad, MS Paint với các đặc tính xử lý ảnh và văn bản giới hạn
o Để làm việc với nhiều tài liệu thì phải mở các instance khác của ứng dụng
o Việc quản lý ứng dụng SDI khá đơn giản
Trang 37 Multiple Document Interface (MDI)
o Ứng dụng cho phép xử lý nhiều document tại một thời điểm
o Các ứng dụng hiện tại thường là dạng MDI: MS Office, MS Studio.NET, Adobe Photoshop, …
o Ứng dụng MDI thường phức tạp và chức năng xử lý đa dạng:
Xử lý cùng một dạng document: MS Word, Adobe Photoshop
Xử lý nhiều dạng document :Visual Studio 6: code, design, image…
a) Thuộc tính (Properties)
Name: Tên của Form Trong một Project tên của các Form phải khác nhau
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ự
Trang 38kiệ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ại
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
- 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
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 )
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ủa Form 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
Trang 39 FormBorderStyle: Chọn Style cho Form (Có 7 lựa chọn khác nhau)
KeyPreview: 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
Opacity: Độ trong suốt của Form
b) Sự kiện (Events)
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
Click: Xảy ra khi người dùng Click chuột vào vùng làm việc thuộc
Form
ControlAdded: 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
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, KeyPress, KeyUp: Bấm, nhả phím
Một số ví dụ minh họa
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);
}
Trang 40Sự kiện FormClosing
//Sự kiện FormClosing xảy ra khi Form đang đóng (chưa hoàn toàn đóng)
private void frmForm_FormClosing( object sender, FormClosingEventArgs e)
private void frmForm_MouseClick( object sender, MouseEventArgs e)
{ //Nếu bạn không muốn biết người dùng nhấn chuột TRÁI hay PHẢI hay GIỮA thì
khi nhấn bất kì nút chuột nào cũng xảy ra sự kiện MouseClick của Form
if (e.Button == MouseButtons Left)
MessageBox Show( "Sự kiện MouseClick xảy ra khi bạn Click chuột TRÁI" ); else if (e.Button== MouseButtons Middle)
MessageBox Show( "Sự kiện MouseClick xảy ra khi bạn Click chuột GIỮA" ); else if (e.Button== MouseButtons Right)
MessageBox Show( "Sự kiện MouseClick xảy ra khi bạn Click chuột PHẢI" ); }