Cách sự kiện hoạt động trong ứng dụng biểu mẫu Windows
Windows Forms cho phép bạn tạo các ứng dụng trên máy tính để bàn một cách trực quan, bằng cách kéo các phần tử giao diện người dùng lên canvas. Các phần tử giao diện người dùng này bao gồm các tiện ích con như nút, bảng điều khiển hoặc hộp kiểm.
Mỗi phần tử giao diện người dùng nhận được một số sự kiện nhất định. Ví dụ: bạn có thể có một sự kiện nhấp chuột cho các nút, một sự kiện đã thay đổi cho các hộp kiểm hoặc một sự kiện kéo và thả cho các bảng điều khiển.
Sự kiện sử dụng trình xử lý sự kiện hoặc hàm, chỉ thực thi khi sự kiện cụ thể đó xảy ra.
Mục Lục
Các loại sự kiện được sử dụng cho các phần tử giao diện người dùng khác nhau
Mỗi phần tử giao diện người dùng có một danh sách các sự kiện. Có nhiều khóa học mà bạn có thể tìm hiểu về các lý thuyết và thực tiễn quan trọng về UX hoặc UI để giúp bạn quyết định những yếu tố UI nào sẽ sử dụng. Dưới đây là một vài ví dụ về các sự kiện được các phần tử giao diện người dùng sử dụng.
Sự kiện nhấn phím xuống, phím lên hoặc phím bấm
Các phần tử giao diện người dùng cho phép người dùng nhập văn bản, chẳng hạn như hộp văn bản, có thể sử dụng các sự kiện này. Các sự kiện này được kích hoạt mỗi khi người dùng nhấn một phím trên bàn phím của họ.
Những điều này có thể hữu ích trong các tình huống mà bạn có chức năng tìm kiếm và bạn có thể cần phải liên tục kiểm tra giá trị của hộp văn bản là gì.
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
TextBox textbox = (TextBox)sender;
string currentTextBoxValue = textbox.Text;
}
Tải sự kiện
Sự kiện tải xảy ra khi biểu mẫu hoặc phần tử giao diện người dùng được hiển thị trên màn hình. Bạn có thể sử dụng sự kiện này khi bạn muốn chức năng cụ thể xảy ra ở giai đoạn khởi tạo biểu mẫu hoặc điều khiển.
Một tình huống mà điều này có thể hữu ích là nếu bạn muốn thêm các điều khiển theo chương trình vào biểu mẫu trong khi biểu mẫu vẫn đang tải.
private void Form1_Load(object sender, EventArgs e)
{
ToolTip toolTip1 = new ToolTip();
toolTip1.AutoPopDelay = 5000;
toolTip1.InitialDelay = 1000;
toolTip1.ReshowDelay = 500;
toolTip1.ShowAlways = true;
toolTip1.SetToolTip(this.button1, "My button1");
toolTip1.Popup += this.ToolTip1_Popup;
}
Sự kiện bật lên chú giải công cụ xảy ra khi bạn di chuột qua một phần tử giao diện người dùng trên ứng dụng và chú giải công cụ xuất hiện. Các đối số được truyền vào trình xử lý sự kiện cho phép bạn truy cập dữ liệu về chú giải công cụ, chẳng hạn như văn bản hoặc kích thước của nó.
private void ToolTip1_Popup(object sender, PopupEventArgs e)
{
ToolTip tooltip = (ToolTip)sender;
string tooltipText = tooltip.GetToolTip(button1);
var tooltipSize = e.ToolTipSize;
}
Sự kiện kéo và thả
Nhiều phần tử giao diện người dùng có thể sử dụng sự kiện kéo và thả, bao gồm bảng điều khiển, nút, hộp ảnh, hộp nhóm, v.v. Sự kiện này được kích hoạt khi người dùng kéo tệp vào phần tử giao diện người dùng.
private void panel1_DragDrop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop, false);
}
Di chuột qua và chuột rời sự kiện
Sự kiện di chuột qua kích hoạt khi chuột di chuột qua một phần tử giao diện người dùng. Khi chuột rời khỏi và dừng di chuột qua phần tử, sự kiện chuột rời khỏi phần tử sẽ được kích hoạt.
private void button1_MouseLeave(object sender, EventArgs e)
{
Button button = (Button)sender;
var buttonText = button.Text;
}
Sự kiện đã thay đổi được Kiểm tra
Các phần tử giao diện người dùng cho phép người dùng chọn một tùy chọn có thể sử dụng sự kiện đã thay đổi đã chọn. Điều này bao gồm các nút radio và hộp kiểm. Chức năng được kích hoạt khi bạn chọn hoặc bỏ chọn hộp kiểm.
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
CheckBox checkbox = (CheckBox)sender;
CheckState state = checkbox.CheckState;
bool isChecked = checkbox.Checked;
}
Giá trị đã thay đổi, Giá trị đã chọn đã Thay đổi hoặc Sự kiện Thay đổi Ngày
Sự kiện thay đổi giá trị có sẵn trên các phần tử giao diện người dùng cho phép bạn chọn một tùy chọn để thay đổi giá trị. Điều này bao gồm các hộp kết hợp, bộ chọn ngày và giờ hoặc lịch. Hàm được kích hoạt khi người dùng chọn một giá trị mới.
private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
MonthCalendar calendar = (MonthCalendar)sender;
var today = calendar.TodayDate;
var selectedDatesStart = e.Start;
var selectedDatesEnd = e.End;
}
Sự kiện nút bấm
Chức năng xử lý sự kiện nhấp chuột được kích hoạt khi bạn nhấp vào một nút.
private void button1_Click(object sender, EventArgs e)
{
Button button = (Button)sender;
string textValue = button.Text;
}
Cấu trúc của một trình xử lý sự kiện
Trình xử lý sự kiện có hai tham số chính: người gửi và một đối tượng sự kiện.
Người gửi là một tham chiếu đến phần tử hoặc đối tượng giao diện người dùng đã kích hoạt sự kiện, chẳng hạn như nút, hộp kiểm hoặc bảng điều khiển. Ví dụ: trong một sự kiện thay đổi hộp kiểm, người gửi sẽ là hộp kiểm mà người dùng đã nhấp vào.
Tham số sự kiện chứa một đối tượng lưu trữ dữ liệu về sự kiện đã xảy ra. Điều này có thể bao gồm tọa độ X và Y của một lần nhấp vào nút hoặc vị trí của chuột tại thời điểm sự kiện kích hoạt.
private void panel1_DragDrop(object sender, DragEventArgs e)
{
Panel panel = (Panel)sender;
panel.Enabled = false;
var eventData = e.Data;
}
Cách tạo và sử dụng trình xử lý sự kiện
Đầu tiên, tạo một ứng dụng Winforms Forms mới trong Visual Studio. Nếu bạn chưa quen với Windows Form, có rất nhiều ứng dụng sao chép mà bạn có thể tạo khi học Windows Form.
Trình xử lý sự kiện trên Canvas
Bạn có thể tạo trình xử lý sự kiện từ cửa sổ thuộc tính ở phía bên phải của canvas. Khi bạn đã tạo một ứng dụng Windows Forms mới, hãy tạo một trình xử lý sự kiện cho phần tử giao diện người dùng hộp kiểm. Điều này sẽ kích hoạt khi người dùng chọn hoặc bỏ chọn hộp kiểm.
- Mở menu hộp công cụ ở bên trái của Visual Studio. Kéo và thả phần tử giao diện người dùng hộp kiểm vào canvas.
- Đánh dấu hộp kiểm trên canvas.
- Trong cửa sổ thuộc tính trên bảng điều khiển bên phải, nhấp vào biểu tượng tia chớp màu vàng để xem danh sách các sự kiện. Cuộn xuống Đã kiểm tra biến cố.
- Nhấp vào không gian trống bên cạnh Đã kiểm tra biến cố. Điều này sẽ tự động tạo ra một chức năng mới để xử lý sự kiện. Hàm sẽ được tạo trong phần mã phía sau của ứng dụng, trong tệp .cs
của bạn. private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
}
Trình xử lý sự kiện sử dụng mã đằng sau
Tạo một chức năng mới trong mã phía sau và liên kết nó với phần tử giao diện người dùng trên canvas.
- Trên canvas, nhấp và kéo một phần tử giao diện người dùng nút. Theo mặc định, tên của nút mới sẽ là “button1”.
- Mở
.cs. Nếu bạn đã để tên ứng dụng Windows Form mặc định là “Form1”, thì đây sẽ là Form1.cs. - Bên trong lớp Form1, hãy tạo một hàm mới. Đảm bảo rằng nó tuân theo cấu trúc của một trình xử lý sự kiện và có hai tham số cho người gửi và đối tượng sự kiện.
private void button1_MouseHoverEvent(object sender, EventArgs e)
{
} - Liên kết trình xử lý sự kiện với sự kiện di chuột của button1. Bạn có thể làm điều này trong hàm tạo.
public Form1()
{
InitializeComponent();
this.button1.MouseHover += button1_MouseHoverEvent;
} - Ngoài ra, bạn cũng có thể liên kết hàm với sự kiện bằng cách sử dụng cửa sổ thuộc tính trên canvas. Mở cửa sổ thuộc tính và nhập tên của trình xử lý sự kiện của bạn vào trường MouseHover. Điều này sẽ button1_MouseHoverEvent.
Cách sử dụng cùng một trình xử lý sự kiện trong nhiều sự kiện
Bạn có thể liên kết cùng một chức năng với nhiều sự kiện. Trong trường hợp này, nếu có một hàm duy nhất được gọi là MouseEvent, bạn có thể thêm trình xử lý sự kiện đó vào cả sự kiện di chuột và nhấp chuột. Điều này sau đó sẽ xử lý cả hai sự kiện bằng cách sử dụng cùng một chức năng.
this.button1.MouseHover += button1_MouseEvent;
this.button1.MouseClick += button1_MouseEvent;
Sử dụng Sự kiện trong Ứng dụng Biểu mẫu Windows
Ứng dụng Windows Forms cho phép bạn kéo và thả các phần tử giao diện người dùng khác nhau như các nút, bảng điều khiển hoặc hộp văn bản vào canvas. Bạn có thể thêm trình xử lý sự kiện vào các phần tử giao diện người dùng này, dựa trên các sự kiện khác nhau có thể xảy ra trong ứng dụng.
Nếu bạn đang xây dựng một Ứng dụng Windows, bạn cũng có thể muốn thêm hình ảnh hoặc đồ họa như một phần của giao diện người dùng của mình. Bạn có thể sử dụng các lớp C # khác nhau như lớp Đồ họa, Bút hoặc Màu, cho phép bạn vẽ các loại hình dạng khác nhau lên canvas.