Bài trước: Windows Form (4): Thiết kế Form
5. Lập trình cho Form
5.1 Hàm Main() trong Windows Form
Như ở phần trước đã đề cập, hàm Main() là đầu vào của một ứng dụng. Khi bạn chạy ứng dụng, hệ điều hành sẽ thực thi các đoạn mã trong hàm Main().
Ở phần trước, chúng ta đã viết đoạn mã tạo Form vào trong hàm Main(). Cách làm này chưa chuyên nghiệp. Ngoài ra, class Program cũng chưa được đặt trong namespace QuanLySach, do vậy trong hàm Main() sẽ không gọi được MainForm().
Ở phần này, chúng ta sẽ viết lại mã nguồn của hàm Main() cho chuyên nghiệp hơn.
namespace QuanLySach
{
static class Program
{
// thuộc tính thiết lập cho luồng chính
// của ứng dụng là Single-Threaded Apartment (STA) thread
[STAThread]
static void Main()
{
// cho phép ứng dụng sử dụng chế độ đồ họa của hệ điều hành
Application.EnableVisualStyles();
// tắt chế độ tương thích khi hiển thị văn bản
// để hiển thị văn bản sắc nét hơn ở các hệ thống hiện đại
Application.SetCompatibleTextRenderingDefault(false);
// tạo, hiển thị MainForm, và chờ tương tác từ người dùng
Application.Run(new
MainForm());
}
}
}
Lưu lại chương trình và chạy thử, bạn sẽ thấy MainForm đã xuất hiện.
Application
chính là một class con của System.Windows.Forms. Application cung cấp các thuộc
tính và phương thức kiểu static để quản lý ứng dụng, ví dụ: chạy và dừng ứng
dụng; lấy thông tin về ứng dụng.
Ghi chú: sau khi chúng ta chèn thêm hình ảnh cho MainForm, Visual Studio đã chèn thêm một tập tin vào dự án, tên tập tin là MainForm.rexs. Tập tin này được sử dụng để lưu trữ các tài nguyên đi kèm (như hình ảnh, các văn bản trên các điều khiển, font chữ,...) của Form tương ứng (MainForm).
5.2 Lập trình xử lý cho nút Thoát
Nhắc lại, mỗi form luôn có 2 tập tin mã nguồn, ví dụ MainForm.cs và MainForm.Designer.cs. Ngoài ra, có thể có tập tin thứ 3 MainForm.rexs để lưu trữ các tài nguyên đi kèm.
MainForm.Designer.cs chứa mã nguồn của quá trình thiết kế form, như tên, thuộc tính của các nút; tên thuộc tính của các nhãn (label),..v.v. Lập trình viên không nên sửa mã nguồn trong tập tin này. Bạn có thể mở mã nguồn của tập tin này để quan sát nội dung bên trong: chuột phải vào MainForm.Designer.cs trong Solution Explorer > chọn View Code.
Để lập trình xử
lý cho form, lập trình viên sẽ viết vào trong tập tin MainForm.cs.
Hiểu đơn giản, một ứng dụng trong Windows Form sẽ hoạt động theo kiểu: chương trình sẽ hiển thị ra các cửa sổ (form), trong đó có các nút điều khiển (control, button), nó sẽ chờ người dùng tương tác (bấm nút) vào các điều khiển và thực hiện các xử lý tương ứng. Lập trình viên sẽ viết mã nguồn để thực hiện các xử lý tương ứng này.
Ví dụ, chúng ta sẽ viết xử lý khi người dùng bấm vào nút Thoát (có Name là btnExit). Cách thực hiện:
- Trong cửa sổ thiết kế của MainForm, chuột phải vào nút Thoát > chọn Properties
- Trong cửa sổ Properties > chọn biểu tượng Events (biểu tượng có hình tia chớp)
- Tìm tới sự
kiện Click > bấm đúp chuột vào chữ Click > Visual Studio sẽ tự động chèn
một dòng mã xử lý sự kiện vào tập tin MainForm.Designer.cs
this.btnExit.Click += new System.EventHandler(this.btnExit_Click);
Và chèn một phương thức vào tập tin MainForm.cs
private void btnExit_Click(object sender, EventArgs e)
{
}
Chúng ta sẽ viết mã nguồn vào phương thức btnExit_Click(): sẽ tắt ứng dụng khi người dùng bấm vào nút Thoát.
private void btnExit_Click(object sender, EventArgs e)
{
Application.Exit();
}
Lưu mã nguồn và chạy chương trình để kiểm tra chức năng này. Nếu bạn bấm vào nút Thoát mà chương trình đóng lại là được.
Vậy là chúng ta đã biết cách lập trình cho các sự kiện của Form.
5.3 Bài tập
1. Application trong đoạn mã sau mang ý nghĩa gì? Phát biểu nào không đúng?
Application.Run(new MainForm());
A. Application chính là một class con của System.Windows.Forms
B. Application cung cấp các thuộc tính kiểu static để quản lý ứng dụng,
C. Application cung cấp các phương thức kiểu static để quản lý ứng dụng,
D. Application là một object do người dùng tạo ra
2. Khi làm việc với một form tên là MainForm, bạn thường sẽ làm việc với 3 tập tin nào?
A. MainForm.sln, MainForm.Designer.cs, MainForm.rexs
B. MainForm.sln, MainForm.Designer.proj, MainForm.cs
C. MainForm.cs, MainForm.Designer.cs, MainForm.rexsource
D. MainForm.cs, MainForm.Designer.cs, MainForm.rexs
3. Để lập trình xử lý cho form có tên là MainForm, lập trình viên sẽ viết mã nguồn vào trong tập tin nào?
A. MainForm.csharp
B. MainForm.cs
C. MainForm.sln
D. MainForm.cpp
4. Viết lại và chạy được các đoạn mã nguồn
trong bài viết.
-----
Gợi ý trả lời
1(D), 2(D), 3(B)