Trong WinForms (Windows Forms) với C#, phạm vi sử dụng biến (variable scope) phụ thuộc vào nơi khai báo biến đó.
Có 3 phạm vi chính
Khai báo bên trong một phương thức (method) hoặc khối lệnh {}.
Chỉ sử dụng được trong khối đó, không thể truy cập từ nơi khác.
private void button1_Click(object sender, EventArgs e)
{
int count = 10; // biến cục bộ
MessageBox.Show(count.ToString());
}
// count không tồn tại ngoài phương thức này
Khai báo trong lớp (class), nhưng ngoài các phương thức.
Có thể sử dụng trong toàn bộ các phương thức của lớp đó.
Thường dùng để lưu trạng thái giữa các sự kiện của form.
public partial class Form1 : Form
{
int count = 0; // biến thành viên
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
count++; // có thể truy cập
label1.Text = count.ToString();
}
}
WinForms không có "biến toàn cục" thực sự như trong C/C++, nhưng có thể tạo bằng cách:
Dùng biến static trong một lớp dùng chung.
Lưu vào Properties.Settings, Application hoặc Program.cs.
Ví dụ dùng static:
public static class GlobalVar
{
public static int UserId = 0;
}
// ở nơi khác trong chương trình
GlobalVar.UserId = 123;
Các Gợi ý sử dụng đúng phạm vi:
Biến cục bộ: dùng cho xử lý tạm thời, nội bộ.
Biến thành viên: dùng khi cần dùng giữa các sự kiện/form controls.
Biến toàn cục: dùng khi cần chia sẻ giá trị giữa các form hoặc lớp khác nhau.
Nếu bạn đang thiết kế phần mềm nhiều Form (như quản lý bán hàng, quản lý học sinh…), việc kiểm soát phạm vi này rất quan trọng để tránh lỗi khó debug và tránh lạm dụng biến toàn cục.
Tìm kiếm:
Khi làm phần mềm thực tế với Winform bạn cần nắm rõ phạm vi sử dụng biến để làm phần mềm quản lý kho / bán hàng / công nợ cho hiệu quả.