Ứng dụng WinForms đầu tiên
Nội dung bài · 5 mục
- 1.Khái niệm
- 2.Ví dụ
- 3.Thử ngay
- 4.Lỗi hay gặp
- 5.Tóm tắt
API ở khoá ASP.NET Core phục vụ khách mua hàng qua mạng. Nhân viên cửa hàng thì cần một phần mềm trên máy tính để nhập hàng, xem đơn. Khoá này viết phần mềm đó bằng WinForms, dùng chung database Oracle với API.
Khái niệm
🪟 WinForms (Windows Forms): thư viện của .NET để viết ứng dụng Windows có cửa sổ, nút bấm, ô nhập.
🖼️ Form: class đại diện cho một cửa sổ, mỗi cửa sổ trong app là một class kế thừa Form.
MainForm : Form là kế thừa, như ở bài Kế thừa của khoá OOP: MainForm nhận
sẵn mọi thứ một cửa sổ cần, như tiêu đề, kích thước, nút đóng, và chỉ thêm
phần riêng.
Ví dụ
Tạo project:
dotnet new winforms -o ShopDesk
cd ShopDeskTemplate tạo sẵn Form1.cs và Form1.Designer.cs cho trình thiết kế kéo thả
của Visual Studio. VS Code không có trình thiết kế đó, nên khoá này xoá hai
file trên và viết giao diện bằng code. Thay toàn bộ Program.cs bằng:
namespace ShopDesk;
static class Program
{
[STAThread]
static void Main()
{
ApplicationConfiguration.Initialize();
Application.Run(new MainForm());
}
}
class MainForm : Form
{
public MainForm()
{
Text = "Quản lý cửa hàng";
Width = 400;
Height = 300;
}
}Chạy bằng dotnet run, một cửa sổ trống hiện ra với tiêu đề "Quản lý cửa
hàng".
Mainlà nơi chương trình bắt đầu. Ở khoá C# Core, ta viết lệnh thẳng trongProgram.csvà compiler tự bọc chúng vàoMain. Ở đây ta tự viếtMainvà đặt nó trongstatic class Program, một class chỉ chứa thành viên static.[STAThread]là attribute, như[HttpGet]ở khoá ASP.NET Core. Nó bật chế độ chạy mà cửa sổ Windows cần.namespace ShopDesk;đặt mọi class trong file vào namespace của project, để tên class không đụng tên ở thư viện khác.ApplicationConfiguration.Initialize()cài font và chế độ hiển thị mặc định. Class này do WinForms tự sinh lúc build, không nằm trong file nào của bạn.Text,Width,Heightlà property kế thừa từForm, gán trong constructor.Application.Runmở cửa sổ và chờ người dùng thao tác, giốngapp.Run()của Web API chờ request. Đóng cửa sổ thìRunkết thúc và chương trình thoát.
Thử ngay
Trong Main, thêm một dòng ngay dưới Application.Run(new MainForm());:
Application.Run(
new MainForm { Text = "Cửa sổ thứ hai" });Đoán trước khi chạy: hai cửa sổ hiện ra cùng lúc, hay cửa sổ thứ hai chỉ hiện khi bạn đóng cửa sổ đầu?
Xem kết quả
Lúc đầu chỉ có cửa sổ "Quản lý cửa hàng".
Đóng nó, cửa sổ "Cửa sổ thứ hai" mới hiện ra.
Đóng tiếp, chương trình thoát.Application.Run dừng ở đó cho tới khi cửa sổ đóng, rồi mới chạy dòng tiếp
theo. Mở form thứ hai từ form chính là việc của bài Hộp thoại và form thứ hai.
Lỗi hay gặp
Quên : Form. Thiếu kế thừa thì MainForm chỉ là class thường: không
có property Text, cũng không đưa được cho Application.Run.
// SAI — lỗi compile: MainForm không có Text
class MainForm
{
public MainForm()
{
Text = "Quản lý cửa hàng";
}
}// ĐÚNG
class MainForm : Form
{
public MainForm()
{
Text = "Quản lý cửa hàng";
}
}Tóm tắt
dotnet new winformstạo project. Khoá này xoá file của trình thiết kế, viết giao diện bằng code.- Mỗi cửa sổ là một class kế thừa
Form, cấu hình trong constructor. Maincó[STAThread], gọiApplication.Run(new MainForm()).Application.Runchờ tới khi cửa sổ đóng mới chạy tiếp.
Bình luận
Đang tải bình luận…