Giả sử bạn đang yêu cầu WinForms, bạn có thể sử dụng sự kiện FormClosing () . Sự kiện FormClosing () được kích hoạt bất cứ lúc nào biểu mẫu được đóng.
Để phát hiện xem người dùng có nhấp vào X hoặc CloseButton của bạn hay không, bạn có thể lấy nó thông qua đối tượng người gửi. Cố gắng truyền người gửi làm điều khiển Nút và xác minh có lẽ cho tên của nó là "CloseButton", chẳng hạn.
private void Form1_FormClosing(object sender, FormClosingEventArgs e) {
if (string.Equals((sender as Button).Name, @"CloseButton"))
// Do something proper to CloseButton.
else
// Then assume that X has been clicked and act accordingly.
}
Nếu không, tôi chưa bao giờ cần phải phân biệt xem X hay CloseButton đã được nhấp vào hay chưa, vì tôi muốn thực hiện một cái gì đó cụ thể trên sự kiện FormClosing, chẳng hạn như đóng tất cả MdiChildren trước khi đóng MDIContainerForm hoặc kiểm tra sự kiện để tìm các thay đổi chưa được lưu. Trong những trường hợp này, theo tôi, chúng ta không cần phải phân biệt với một trong hai nút.
Đóng bằng ALT+ F4cũng sẽ kích hoạt sự kiện FormClosing (), vì nó sẽ gửi một thông báo đến Biểu mẫu có nội dung là đóng. Bạn có thể hủy sự kiện bằng cách đặt
FormClosingEventArgs.Cancel = true.
Trong ví dụ của chúng tôi, điều này sẽ dịch là
e.Cancel = true.
Lưu ý sự khác biệt giữa các sự kiện FormClosing () và FormClosed () .
FormClosing xảy ra khi biểu mẫu nhận được thông báo cần đóng và xác minh xem nó có việc gì cần làm trước khi đóng hay không.
FormClosed xảy ra khi biểu mẫu thực sự được đóng, vì vậy sau khi nó được đóng.
Không giúp đỡ à?