5.1. Giới thiệu Windows Forms
Khái niệm: Windows Forms (WinForms) là một công nghệ (API) trong .NET Framework, cho phép tạo các ứng dụng desktop có giao diện đồ họa (GUI) chạy trên Windows.
Form (Biểu mẫu): Là cửa sổ chính của ứng dụng (ví dụ:
Form1). Nó là một “container” (vật chứa) để chứa tất cả các đối tượng điều khiển khác.Controls (Đối tượng điều khiển): Là các thành phần tương tác trên giao diện (ví dụ: nút bấm, ô nhập liệu).
5.2. Thuộc tính (Properties) và Sự kiện (Events)
Đây là 2 khái niệm cốt lõi của lập trình trực quan:
Thuộc tính (Properties): Là đặc điểm của đối tượng. Bạn thay đổi chúng trong cửa sổ
Propertieslúc thiết kế, hoặc thay đổi bằng mã lệnh lúc chạy.Ví dụ:
Text(Dòng chữ hiển thị),Name(Tên dùng để gọi trong code),Size(Kích thước),BackColor(Màu nền),Enabled(Cho phép/Vô hiệu hóa).
Sự kiện (Events): Là hành động mà người dùng (hoặc hệ thống) tác động lên đối tượng. Bạn viết phương thức xử lý sự kiện (event handler) để đáp ứng lại các hành động này.
Ví dụ:
Click(Xảy ra khi nhấn chuột vào Button),TextChanged(Xảy ra khi nội dung TextBox thay đổi),Load(Xảy ra khi Form được tải lên).
5.3.Các điều khiển thông thường (Common Controls)
Label (Nhãn):
Công dụng: Dùng để hiển thị văn bản tĩnh (người dùng không sửa được).
Thuộc tính chính:
Text.
TextBox (Ô nhập liệu):
Công dụng: Cho phép người dùng nhập và sửa văn bản.
Thuộc tính chính:
Name(ví dụ:txtUsername),Text(dùng để lấy hoặc gán giá trị).Sự kiện chính:
TextChanged.
Button (Nút bấm):
Công dụng: Kích hoạt một hành động khi người dùng nhấn vào.
Thuộc tính chính:
Name(ví dụ:btnDangNhap),Text(ví dụ: “Đăng nhập”).Sự kiện chính:
Click.
Ví dụ (Xử lý sự kiện Button Click):
C#// Giả sử có 1 TextBox tên là 'txtHoTen' và 1 Button tên là 'btnChao' // Đây là phương thức xử lý sự kiện, được tạo tự động // khi bạn nhấp đúp vào Button trong giao diện thiết kế private void btnChao_Click(object sender, EventArgs e) { // 1. Lấy dữ liệu từ TextBox string hoTen = txtHoTen.Text; // 2. Xử lý logic string loiChao = "Xin chào " + hoTen; // 3. Hiển thị kết quả (dùng MessageBox) MessageBox.Show(loiChao, "Thông báo"); }
5.4. Điều khiển đặc biệt (Lựa chọn)
CheckBox (Hộp kiểm):
Công dụng: Cho phép chọn một hoặc nhiều tùy chọn (bật/tắt).
Thuộc tính chính:
Text,Checked(trả vềtruenếu được chọn,falsenếu không).
RadioButton (Nút chọn):
Công dụng: Cho phép chọn một tùy chọn duy nhất trong một nhóm (thường phải đặt trong
GroupBox).Thuộc tính chính:
Text,Checked.
ComboBox (Hộp chọn):
Công dụng: Cung cấp danh sách thả xuống để chọn.
Thuộc tính chính:
Items(để thêm các mục vào danh sách),Text(mục đang hiển thị),SelectedIndex(chỉ số của mục được chọn).
ListBox (Hộp danh sách):
Công dụng: Tương tự ComboBox nhưng hiển thị danh sách đầy đủ.
5.5. Các điều khiển khác
MenuStrip (Thanh menu): Dùng để tạo menu chính cho ứng dụng (ví dụ: File, Edit, View…).
Panel, GroupBox, TabControl (Điều khiển chứa đựng): Dùng để nhóm các điều khiển khác lại cho gọn gàng, logic.
MessageBox (Hộp thoại): Không phải là điều khiển kéo-thả, mà là một lớp dùng để hiển thị hộp thoại thông báo nhanh.
MessageBox.Show("Nội dung");
Dialogs (OpenFileDialog, SaveFileDialog…): Các điều khiển (kéo vào Form) dùng để mở hộp thoại chuẩn của Windows (chọn tệp, lưu tệp, chọn màu…).
Bài tập thực hành (4 giờ)
Bài tập 5.1: Xây dựng Form Đăng nhập
Tạo dự án Windows Forms Application mới tên
BaiTap5_DangNhap.Thiết kế giao diện (kéo-thả từ
Toolbox):2
Label(Text: “Tên đăng nhập:”, “Mật khẩu:”).2
TextBox(Name:txtUsername,txtPassword).(Nâng cao: Đặt thuộc tính
PasswordCharcủatxtPasswordthành*).2
Button(Name:btnDangNhap,btnThoat. Text: “Đăng nhập”, “Thoát”).
Hướng dẫn :
Bước 1: Tạo dự án (Windows Forms Application)
Đây là bước quan trọng nhất, chúng ta không tạo Console Application nữa.
Mở Visual Studio 2008.
Chọn menu File -> New -> Project….
Trong cửa sổ “New Project”:
Bên trái (Project types): Chọn Visual C#.
Bên phải (Templates): Chọn Windows Forms Application. 1
Ở ô Name: (Tên) bên dưới, gõ chính xác:
BaiTap5_DangNhapNhấn OK.
Visual Studio sẽ tạo dự án và mở ra một Form trống tên là Form1.cs [Design]. 2
Bước 2: Thiết kế giao diện (Kéo-thả)
Bây giờ chúng ta sẽ “vẽ” giao diện.
Mở Toolbox (Hộp công cụ):
Nhìn sang bên trái màn hình, tìm tab Toolbox.
Nếu không thấy, vào menu View -> Toolbox để mở nó ra. 3
Kéo-thả các đối tượng:
Tìm
Labeltrong Toolbox, kéo thả nó vàoForm1. Làm 2 lần (cho 2 Label).Tìm
TextBoxtrong Toolbox, kéo thả nó vàoForm1. Làm 2 lần (cho 2 TextBox).Tìm
Buttontrong Toolbox, kéo thả nó vàoForm1. Làm 2 lần (cho 2 Button).
Dùng chuột sắp xếp các đối tượng trên Form cho giống hình minh họa.
Bước 3: Thiết lập thuộc tính (Properties)
Đây là bước “đặt tên” và “thay đổi nhãn” cho các đối tượng bạn vừa kéo vào.
Cách làm: Nhấp chọn 1 đối tượng trên Form (ví dụ:
button1).Nhìn vào cửa sổ Properties (thường ở góc dưới bên phải).
Tìm thuộc tính
NamehoặcTextvà thay đổi giá trị.
Hãy làm lần lượt cho tất cả các đối tượng:
| Đối tượng | Thuộc tính cần đổi | Giá trị mới | Ý nghĩa |
label1 | Text | Tên đăng nhập: | Đặt lại nhãn hiển thị. |
label2 | Text | Mật khẩu: | Đặt lại nhãn hiển thị. |
textBox1 | (Name) | txtUsername | (Quan trọng) Đặt tên code. |
textBox2 | (Name) | txtPassword | (Quan trọng) Đặt tên code. |
PasswordChar | * | (Nâng cao) Ký tự che mật khẩu. | |
button1 | (Name) | btnDangNhap | (Quan trọng) Đặt tên code. |
Text | Đăng nhập | Đặt lại nhãn hiển thị. | |
button2 | (Name) | btnThoat | (Quan trọng) Đặt tên code. |
Text | Thoát | Đặt lại nhãn hiển thị. |
Ghi chú (Name) vs (Text):
(Name): Là tên dùng để gọi trong code (ví dụ:
txtUsername).Text: Là nội dung hiển thị ra cho người dùng thấy.
Bước 4: Viết mã nguồn (Xử lý sự kiện) (Chi tiết)
Bây giờ chúng ta sẽ làm cho các nút bấm “hoạt động”.
4.1. Viết code cho nút “Thoát”
Quay lại tab thiết kế
Form1.cs [Design].Nhấp đúp (double-click) vào nút Thoát (nút
btnThoatcủa bạn).Visual Studio sẽ tự động chuyển sang màn hình code (
Form1.cs) và tạo sẵn một hàm rỗng tên làbtnThoat_Click.Bạn chỉ cần gõ một dòng code vào bên trong hàm đó:
C#private void btnThoat_Click(object sender, EventArgs e) { // Lệnh this.Close() dùng để đóng Form hiện tại (Form1) this.Close(); }
4.2. Viết code cho nút “Đăng nhập”
Quay lại tab thiết kế
Form1.cs [Design].Nhấp đúp (double-click) vào nút Đăng nhập (nút
btnDangNhapcủa bạn).Visual Studio sẽ tạo thêm một hàm rỗng nữa là
btnDangNhap_Click.Hãy gõ đoạn mã logic sau vào bên trong hàm đó:
C#private void btnDangNhap_Click(object sender, EventArgs e) { // 1. Lấy dữ liệu từ 2 TextBox (dùng thuộc tính .Text) // Dùng tên (Name) mà bạn đã đặt ở Bước 3 string user = txtUsername.Text; string pass = txtPassword.Text; // 2. Kiểm tra logic (dùng if...else) if (user == "admin" && pass == "123") { // 3a. Nếu đúng -> Thông báo thành công [cite_start]// MessageBox là một hộp thoại thông báo [cite: 1577] MessageBox.Show("Đăng nhập thành công!", "Thông báo"); // (Sau này học, chúng ta sẽ mở Form chính ở đây) } else { // 3b. Nếu sai -> Thông báo lỗi MessageBox.Show("Sai tên đăng nhập hoặc mật khẩu!", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
Bước 5: Chạy và kiểm thử
Nhấn phím F5 (hoặc nút Start Debugging <img>) để chạy.
Form Đăng nhập của bạn sẽ xuất hiện.
Thử nghiệm 1 (Thành công):
Gõ
adminvào ô Tên đăng nhập.Gõ
123vào ô Mật khẩu (bạn sẽ thấy***).Nhấn nút “Đăng nhập” -> Sẽ hiện thông báo “Đăng nhập thành công!”.
Thử nghiệm 2 (Thất bại):
Gõ
adminvà555.Nhấn nút “Đăng nhập” -> Sẽ hiện thông báo “Sai tên đăng nhập hoặc mật khẩu!”.
Thử nghiệm 3 (Thoát):
Nhấn nút “Thoát” -> Chương trình sẽ đóng lại.
