2010-06-15 29 views
7

Tôi có một WinForm mà tôi muốn giảm thiểu khi "x" ở góc trên bên phải được nhấp. Để thực hiện điều này, tôi có:"x" Để Giảm thiểu WinForm, ContextMenu Để Đóng WinForm?

private void Form_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     e.Cancel = true; 
     WindowState = FormWindowState.Minimized; 
    } 

Đó là tất cả tốt và tốt, nhưng bây giờ tôi có một menu ngữ cảnh mà có sự lựa chọn để đóng WinForm, nhưng vì đoạn code trên, nó chỉ đơn giản là thu nhỏ cửa sổ.

Làm cách nào để có được mọi thứ hoạt động theo cách tôi muốn?

Trả lời

10

Trình xử lý sự kiện nhấp chuột đặt cờ bool được sử dụng trong trình xử lý sự kiện FormClosing.

Stripped xuống mẫu mã:

public class YourForm : Form 
{  
    private bool _reallyClose; 

    private void ContextMenuClick(object sender, EventArgs e) 
    { 
     _reallyClose = true; 
     this.Close(); 
    } 

    private void Form_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     if (!_reallyClose) 
     { 
      e.Cancel = true; 
      WindowState = FormWindowState.Minimized; 
     } 
    } 

} 
+0

Cảm ơn ví dụ về mã! :) – sooprise

+0

Làm việc hoàn hảo! – sooprise

0

Bạn cần phải thiết lập một lá cờ khi nhấp vào Đóng menu.

Sau đó, bạn có thể kiểm tra cờ trong FormClosing và không làm gì cả.

0

Cả menu X và ngữ cảnh hệ thống đều gửi cùng một thông điệp Windows, đừng nghĩ rằng bạn có thể tách riêng hành động một cách dễ dàng. Nó cũng là thông điệp Alt + F4.

Tôi cũng muốn nói rằng tôi sẽ không thích hành vi không chuẩn này, nếu tôi nhấn X Tôi muốn nó đóng, không được giảm thiểu, đó là những gì nút 2 bên trái là cho.

Có lẽ cách tiếp cận tốt nhất để có giao diện mà bạn muốn không hiển thị nút X mặc định - tắt tính năng mặc định, nhưng thay vào đó vẽ đối tượng địa lý của riêng bạn. Điều này có thể gây rối với menu ngữ cảnh hệ thống để bạn không còn có tùy chọn đóng.

+0

Tôi quên đề cập đến điều này là dành cho ứng dụng khay. Vì vậy, nhấn "x" sẽ loại bỏ cửa sổ khỏi tầm nhìn, nhưng ứng dụng vẫn chạy trong khay. – sooprise

+0

là menu ngữ cảnh mà bạn tham chiếu đến trình đơn ngữ cảnh hoặc biểu tượng hệ thống từ thanh tiêu đề của cửa sổ bạn muốn ẩn hoặc một số menu ngữ cảnh khác? –

0

Bạn có thể kiểm tra người gửi xem đó có phải là ngữ cảnh và hành động phù hợp không?