2009-12-08 31 views
7

Có ai biết cách tìm hiểu xem cửa sổ wpf có bị đóng bởi nút "x" không?Làm cách nào để biết cửa sổ đã bị đóng bởi nút "x"?

+0

Bạn có thể làm rõ? Bạn có muốn phân biệt giữa nhấn nút "X" và các phương tiện khác để đóng cửa sổ (tức là bàn phím) không? Hoặc bất kỳ phương tiện đóng cửa sổ? –

+0

phân biệt giữa cách nhấn nút "X" và các phương tiện khác để đóng cửa sổ (ví dụ: bàn phím) – Vytas999

+1

Tôi nghĩ rằng sẽ hữu ích nếu bạn giải thích lý do bạn muốn thực hiện điều này. Đối với người dùng, nó không quan trọng cho dù nó bị đóng bởi X hoặc một mục trình đơn. Có lẽ sau đó chúng tôi có thể giúp bạn đạt được những gì bạn thực sự muốn làm thay vào đó –

Trả lời

11

Cách đơn giản nhất (theo ý kiến ​​của tôi) là lưu trữ một boolean cho biết nếu người dùng đã đóng biểu mẫu thông qua một phương thức khác.

Sau đó, trong sự kiện OnClosing, hãy kiểm tra xem liệu boolean có sai không (chỉ ra rằng nút x đã được nhấp).

Vấn đề duy nhất với điều này là thực tế bạn đã đặt chính boolean. Việc này có thể phụ thuộc vào cách khác mà người dùng có thể đóng biểu mẫu của bạn.

EDIT: Tôi nên chỉ ra rằng điều này phụ thuộc nhiều vào các cách khác mà biểu mẫu có thể bị đóng. Nếu bạn có một số phương pháp đóng cửa sổ này bằng cách gọi Window.Close(), tôi sẽ xem xét việc tạo một phương thức duy nhất có tên là UserClose(), thiết lập boolean cho bạn.

public void UserClose() 
{ 
    NonXClose = true; 
    this.Close(); 
} 

Điều này sẽ cho phép mã bên ngoài đóng cửa sổ, với cài đặt của boolean.

3

Sự khác biệt như sau:

Window.Close() làm cho WM_CLOSE được gửi đến cửa sổ.

Nút Alt + F4 và X gây ra tin nhắn WM_SYSCOMMAND với loại SC_CLOSE. Bạn có thể quyết định xem bạn có muốn định tuyến thêm thông điệp này không (và gây ra WM_CLOSE ở cuối).

Look for my answer with code example here

Các vấn đề liên quan