2011-01-07 13 views
6

Tôi đang cố gắng thực hiện để người dùng được nhắc xác nhận thoát chương trình của tôi bằng C#, nhưng vì lý do nào đó, nếu họ nói "có" họ muốn thoát, hộp xác nhận sẽ bật lên lần nữa. Tôi không thể hiểu tại sao.Xác nhận đôi khi xuất cảnh

if (MessageBox.Show("Are you sure you want to exit?", "Confirm exit", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) 
    { 
     e.Cancel = true; 
    } 
    else { Application.Exit(); } 
+0

đâu mã này được chạy? –

+0

Tôi giả sử bạn đang xử lý sự kiện Biểu mẫu đóng. Tôi không nghĩ rằng bạn cần Application.Exit() –

+0

Có, hình thức đóng cửa, nhưng tôi cần application.exit() như có một cửa sổ mở mà tôi cần phải đóng cùng một lúc. – Sean

Trả lời

4

Ah, bạn đã kiểm tra CloseReason cho sự kiện FormClosing? Tôi nghĩ rằng bạn có thể nhận được sự kiện tương tự vì hai lý do khác nhau (mặc dù tôi không thực sự mong đợi điều đó xảy ra bình thường); kiểm tra FormClosingEventArgs để xem thông số là gì.

3

Ah, tôi đã tìm ra cách khắc phục. Tôi đã xóa Application.Exit(); sự kiện từ sự kiện FormClosing và chuyển nó vào sự kiện FormClosed. Tất cả đều hoạt động ngay bây giờ.

7

Sử dụng này

private void frmMain_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     if (MessageBox.Show("Are you sure you want to close?", "Infomate", MessageBoxButtons.YesNo) == DialogResult.No) 
     { 
      e.Cancel = true; 
     }   
    }