xác và không bị lỗi. Tuy nhiên, lỗi chương trình l khơng thể trnh khỏi vì người lập trình khơng bao giờ lường trước được mọi khả năng của hệ thống. Sau đây là một số ví dụ về những trường hợp người lập trình ít khi lường trước hoặc không thể lường trước được:
Lỗi không xuất phát từ chương trình do chng ta pht triển m lại xuất pht từ cc thư viện được sử dụng bởi chương trình.
Tài nguyên hệ thống không đáp ứng được yêu cầu (bộ nhớ không đủ, ổ cứng bị đầy, thiết bị đang sử dụng bị rút ra...)
Đối với các ngôn ngữ thế hệ cũ, mỗi khi gặp lỗi chương trình cĩ thể dừng ngay v tồn bộ dữ liệu của người dùng bị mất. Để tránh trường hợp xấu này, các ngôn ngữ thế hệ mới cung cấp cơ chế quản lý ngoại lệ (Exception).
C php của việc bắt v xử lý lỗi được mô tả như sau:
try {
// Đoạn chương trình thực hiện bình thường }
catch {
// Đoạn chương trình được thực hiện khi cĩ lỗi // Xử lý lỗi
}
finally {
// Đoạn chương trình dọn dẹp
// Đoạn này luôn được gọi kể cả cĩ lỗi hay khơng }
Trước .NET, để tạo các giao diện trên Windows, người dùng có thể sử dụng các phương pháp sau:
- Lập trình với cc hm API, cch ny tạo giao diện rất phức tạp, địi hỏi người lập trình cĩ kiến thức su về các hàm API của Windows. Thời gian phát triển các ứng dụng bằng phương pháp này rất chậm.
- Lập trình với MFC: Visual C được cung cấp một loạt các lớp nền tảng, người lập trình C++ cĩ thể sử dụng cc lớp ny để tạo giao diện dễ dàng hơn nhiều so với sử dụng API. MFC được sử dụng kết hợp với ClassWizard tạo cơ chế visual cho phép người lập trình "vẽ" giao diện thay vì dng dịng lệnh.
- Lập trình với Visual Basic: VB cung cấp cch thức dễ dng nhất để tạo giao diện (so với 2 phương pháp trước). Người dùng dễ dàng tạo các form, đưa vào đó các control và viết m lệnh cho cc control ny. Nhược điểm của phương pháp này lại nằm trong ngôn ngữ, VB không phải là ngôn ngữ hướng đối tượng nên việc tạo các control do người dùng định nghĩa là rất khó khăn. Đặc biệt không thể tạo được các control trong quá trình chạy chương trình (runtime).
.NET kết hợp toàn bộ các ưu điểm của các phương pháp trên. Việc tạo giao diện với .NET có những đặc điểm sau:
- Dễ dàng: Giống như VB, người dùng có thể dễ dàng dùng chuột để vẽ các control trn form
- Đa dạng: Số lượng control do .NET cung cấp đang dạng hơn nhiều so với các control của VB (Ví dụ: các Panel, Split Panel,...). Giúp người dùng có nhiều lựa chọn tạo các giao diện chuẩn mà không phải sử dụng thêm các giải pháp của các hng thứ 3.
- Ty biến: Song song với việc vẽ các control trên form, VS2005 phát sinh các đoạn m lệnh tạo ra cc control ny. Bản chất cc control được tạo ra từ m lệnh, do đó người lập trình cĩ thể tạo cc control trong qu trình chạy chương trình (runtime)
- Tồn bộ cc thành phần giao diện Winform của .NET được đặt trong nhóm thư viện System.Windows.Forms.
Các ứng dụng có giao diện gồm nhiều control khác nhau. .NET cung cấp hệ thống hàng trăm control chuẩn cho phép bạn sử dụng trên giao diện của mình. Cơ chế lập trình hướng đối tượng cho phép người dùng chỉnh sửa lại các control theo ý muốn. Thậm chí, họ cĩ thể tạo ra cc control mới của ring mình. Trong phần ny chng ta sẽ tìm hiểu về cc thuộc tính, sự kiện chung của tất cả cc control. Tất cả các control đều được kế thừa từ lớp cơ bản System.Windows.Forms.Control. Lớp này được xây dựng với các chức năng cơ bản như làm việc với bàn phím, chuột, thay đổi vị trí và kích thước...
Trong môi trường VS2005, khi bạn đưa một control vào form, Visual Studio thực hiện cc cơng việc sau:
Khai báo một biến với kiểu là kiểu của control được đưa vào. Tên biến chính là thuộc tính Name của control.
Trong phương thức InitializeComponent của form, tạo mới đối tượng control
Đặt các thuộc tính của control. Mỗi khi bạn thay đổi các thuộc tính của control trên cửa sổ design, Visual Studio sẽ tạo ra các lệnh gán thuộc tính tương ứng. Ví dụ: Khi bạn dịch chuyển, thay đổi kích thước của control, các lệnh gán thuộc tính Location, Size sẽ thay đổi theo.
Sử dụng phương thức Add của danh sách control của form để thêm control này vào form.
Nếu người dùng thêm các sự kiện của control, Visual Studio cũng thêm các lệnh gắn sự kiện với các hàm tương ứng trong phương thức
InitializeComponent.
Bạn có thể sửa đổi các đoạn lệnh khởi tạo trong phương thức
InitializeComponent. Tuy nhiên, việc này chỉ nên thực hiện khi bạn đ am
hiểu cơ chế sinh code của VS2005. Để tránh người dùng vô ý can thiệp vo cc đoạn code này, Visual Studio tách đoạn lệnh của InitializeComponent ra một file riêng. Nếu form có tn l Form1:
o File Form1.cs chứa các đoạn m do người dùng tạo ra
o File Form1.Designer.cs chứa các đoạn m do Visual Studio tự động tạo ra (Khai báo biến control, phương thức InitializeComponent) o Việc sửa đổi khai báo và lệnh trong file Form1.Designer.cs sẽ được
Khi đ nắm r cơ chế tự động tạo control của VS, bạn có thể lập trình để tạo ra các control khi chương trình chạy (runtime).
Do tất cả các control đều được kế thừa từ System.Windows.Forms.Control. Các phương thức, thuộc tính, sự kiện của lớp control sẽ được sử dụng trong tất cả các control khác.
Cc thuộc tính
Tn thuộc tính Kiểu Mơ tả
Name String Tên của control. Name được sử dụng để làm tên biến nên phải đặt tên theo quy ước tên biến
Location System.Drawing.Point Vị trí của góc trái trên của control, là gồm 2 tọa độ (x, y) Left Double Tọa độ của cạnh trái của control
Top Double Tọa độ của cạnh trên của control Size System.Drawing.Size Kích thước của control, đối tượng kiểu Width Double Chiều rộng của control
Height Double Chiều cao của control
Text String Đoạn văn bản của control (tùy theo loại control mà đoạn văn bản này được hiển thị ở các vị trí khác nhau)
Visible Boolean = True nếu control được nhìn thấy, = False nếu control bị ẩn
Enabled Boolean = True nếu control sử dụng được (ví dụ nút bấm có thể bấm được, ô nhập textbox có thể nhập giá trị), = False nếu control không sử dụng được
Font Font chữ của control
Focused Boolean Nếu người dùng g phím, trong một thời điểm, chỉ có một control nhận được phím ny. Control đó là control chiếm focus của hệ thống. Focused = True khi control đang chiếm focus.
Các phương thức
Tên phương thức Mơ tả
FindForm Trả về form chứa control Focus Đặt control là focus của hệ thống Show Hiện control
Hide Ẩn control
Invalidate Cập nhật control
Cc sự kiện
Tn sự kiện Mơ tả
Click Pht sinh khi control bị click (bằng chuột hoặc bn phím) GotFocus Phát sinh khi control nhận được Focus
LostFocus Pht sinh khi control mất Focus
KeyDown Phát sinh khi một phím được nhấn xuống (trong khi control nhận Focus)
KeyPress Phát sinh khi hệ thống thông báo có một ký tự được nhấn và thả ra (hoặc giữ trong 1 khoảng thời gian) trong khi control nhận Focus
KeyUp Phát sinh khi một phím đang nhấn được thả ra (trong khi control nhận Focus
MouseDown Phát sinh khi người dùng nhấn phím chuột trong lúc con trỏ chuột ở trong phạm vi của control
MouseEnter Phát sinh khi con trỏ chuột bắt đầu vào trong phạm vi của control MouseHover
MouseLeave Pht sinh khi con trỏ chuột rời khỏi phạm vi của control MouseMove Pht sinh khi con trỏ chuột di chuyển trn phạm vi của control
MouseWheel Phát sinh khi người dùng lăn phím lăn của chuột khi control nhận Focus Move Phát sinh khi Control thay đổi vị trí
Paint Phát sinh khi Control được vẽ lại Resize Phát sinh khi Control thay đổi kích thước Validating Phát sinh khi Control đang được kiểm tra Validated Phát sinh khi Control đ được kiểm tra
TextChanged Phát sinh khi thuộc tính Text của control thay đổi
Các control cơ bản