-Trong Form, khi bắt sự kiện cho Button Thoát để thoát khỏi form hiện tại thì ta có sự kiện cho nút thoát như sau:
private void btn_Thoat_Click(object sender, EventArgs e)
{
DialogResult dialog;
dialog = MessageBox.Show("Bạn có muốn thoát hay không", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dialog == DialogResult.Yes)
Application.Exit();
}
-Trong khi đó, sự kiện FormClosing khi ta click vào nút tắt form (X):
private void DangNhap_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult DR = MessageBox.Show("Bạn có muốn FormClosing không", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (DR == DialogResult.No)
e.Cancel = true;
}
-Lúc này, khi chạy chương trình, nếu người dùng click vào nút button Thoat và sau khi chọn Yes thì chương trình tiếp tục hiển thị hộp thoại của sự kiện FormClosing và người dùng chọn Yes thêm lần nữa thì Form mới tắt. Để việc lặp lại 2 lần này không xảy ra thì ta cho 1 biến đơn giản để giải quyết vấn đề trên.
int tat = 0;
private void btn_Thoat_Click(object sender, EventArgs e)
{
int tat = 1;
DialogResult dialog;
dialog = MessageBox.Show("Bạn có muốn thoát hay không", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dialog == DialogResult.Yes)
Application.Exit();
}
-Trong khi đó, sự kiện FormClosing khi ta click vào nút tắt form (X):
private void DangNhap_FormClosing(object sender, FormClosingEventArgs e)
{
if (tat == 0)
{
DialogResult DR = MessageBox.Show("Bạn có muốn FormClosing không", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (DR == DialogResult.No)
e.Cancel = true;
}
}
Giải thích: Khi click vào nút thoát thì tat = 1 và sự kiện FormClosing sẽ không diễn ra vì không thỏa tat = 1