2010-06-15 2 views
7

오른쪽 위 모서리의 "x"를 클릭하면 최소화 할 WinForm이 있습니다. 는이를 위해 내가 가진 모든 아니라 좋은,하지만 지금은의 WinForm을 종료 할 수있는 옵션을 가진 컨텍스트 메뉴를 가지고 있지만, 때문에 위의 코드, 그것은 단순히 창을 최소화"x"WinForm을 최소화하려면 ContextMenu WinForm을 닫으시겠습니까?

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

.

내가 원하는 방식대로 작동하려면 어떻게해야합니까?

답변

10

FormClosing 이벤트 처리기에서 사용되는 bool 플래그를 클릭 이벤트 처리기에 설정하십시오. 당신은 닫기 메뉴를 클릭하면 플래그를 설정해야

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

코드 예를 보내 주셔서 감사합니다! :) – sooprise

+0

완벽하게 일했습니다! – sooprise

0

:

코드 샘플을 박탈.

그런 다음 FormClosing에서 플래그를 확인하고 아무 작업도 수행 할 수 없습니다.

0

X 및 시스템 상황에 맞는 메뉴는 모두 동일한 Windows 메시지를 보내며 쉽게 작업을 구분할 수 있다고 생각하지 마십시오. 또한 Alt + F4 메시지이기도합니다.

X가 맞으면이 표준 외적인 동작이 마음에 들지 않을 것이라고 말하고 싶습니다. 최소화 된 상태가 아닌 닫히고 싶습니다. 왼쪽의 단추 2는 무엇입니까.

아마도 원하는 모양과 느낌을 갖는 가장 좋은 방법은 기본 X 버튼을 표시하는 것이 아니라 기본 기능을 끄고 나만의 이벤트로 자신의 그림을 그리는 것입니다. 시스템 컨텍스트 메뉴가 엉망이되어 더 이상 닫을 수 없습니다.

+0

트레이 응용 프로그램에 대한 언급을 잊어 버렸습니다. 따라서 "x"를 누르면 창문이 보이지 않게되지만 응용 프로그램은 여전히 ​​트레이에서 실행 중입니다. – sooprise

+0

은 숨기려는 창의 제목 표시 줄이나 다른 컨텍스트 메뉴에서 트레이 아이콘이나 시스템 아이콘 중 하나를 참조하는 컨텍스트 메뉴입니까? –

0

발신자가 컨텍스트 메뉴인지 확인하고 적절히 작동하는지 확인할 수 있습니까?

관련 문제