2017-04-19 5 views
0

아래에서 볼 수 있듯이 마우스로 richTextBox1을 떠날 때 숨겨져 있어야합니다. 이제는 제대로 작동하지만, 컨텍스트 메뉴를 마우스 오른쪽 버튼으로 클릭하여 열면 프로그램도 숨겨집니다. 하지만 나는 MSDN에서 ContextMenu.isOpen()을 사용하는 방법을 설명하는이 페이지를 찾았지만 Visual Studio에서는 작동하지 않습니다.Visual Studio에서 ContextMenu.isOpen이 누락되었습니다.

private void richTextBox1_MouseLeave(object sender, EventArgs e) 
    { 
     this.WindowState = FormWindowState.Minimized; 
     this.ShowInTaskbar = false; 
    } 

나는 그렇게처럼 다만 것 그것이 않은 경우 :

private void richTextBox1_MouseLeave(object sender, EventArgs e) 
    { 
     if(!richTextBox1.ContextMenu.isOpen()){ 
      this.WindowState = FormWindowState.Minimized; 
      this.ShowInTaskbar = false; 
     } 
    } 

오전 나는 마이크로 소프트가 존재하지 않는 기능을 문서화하는 기능을 사용하거나 정상적인 방법을 오해?

내가 작동 시키거나 비슷한 것을하도록 도와 줄 수 있습니까?

+0

참조가 누락 ... 참조가 없거나하지 –

+0

되어 첵하려고'ContextMenu.isOpen는()'WPF의 ContextMenu입니다. winforms 또는 WPF를 코딩하고 있습니까? – Pikoh

+0

어떻게 참조를 찾을 수 있습니다, MSDN은 그것의 일부라고. 나는 심지어 문맥을 사용하기 위해로드해야합니다. 네임 스페이스 : System.Windows.Controls 어셈블리 : PresentationFramework (PresentationFramework.dll) –

답변

0

Winforms ContextMenu에는 isOpen 속성이 없습니다. 할 수있는 일은 PopupCollapse 이벤트를 구독하고 개인 변수를 사용하여 ContextMenu 상태를 저장하는 것입니다. 이런 식으로 뭔가 :

처음에 우리는 부울 변수 선언

private bool isContextMenuOpen; 

그런 다음 폼의 생성자를 (또는 우리가 RichTextBoxContextMenu을 추가 한 후) 우리는 이벤트를 구독 :

public Form1() 
{ 
    InitializeComponent(); 
    //Popup event is raised when the contextmenu is shown 
    this.richTextBox1.ContextMenu.Popup += ContextMenu_Popup; 
    //Collapse event is raised when the contextmenu is hiding 
    this.richTextBox1.ContextMenu.Collapse += ContextMenu_Collapse; 
} 

이벤트 핸들러 :

private void ContextMenu_Collapse(object sender, EventArgs e) 
{ 
    this.isContextMenuOpen = false; 
} 

private void ContextMenu_Popup(object sender, EventArgs e) 
{ 
    this.isContextMenuOpen = true; 
} 

그런 다음 코드 이 같은 것입니다 :

private void richTextBox1_MouseLeave(object sender, EventArgs e) 
{ 
    if(!this.isContextMenuOpen){ 
     this.WindowState = FormWindowState.Minimized; 
     this.ShowInTaskbar = false; 
    } 
} 
+0

감사합니다. 나는 내가 그것을 달릴 수 있는지 시험해 볼 것이다. 확장 된 메서드를 만드는 방법이나이 메서드를 호출하는 방법을 배워야 할 것입니다. 하지만 어쨌든 그것을 배울 필요가 있습니다. 내가 그걸로 꼼짝 못하게되면 다시 연락 할게. –

+0

잘 작동합니다. ContextMenu 위로 마우스를 가져 가면 창이 닫히지 않습니다. 유일한 문제는 ContextMenu를 닫을 때 내 마우스가 어디에 있더라도 창은 최소화된다는 것입니다. –

+0

몇 가지 수정 작업이 완료되었습니다. 도와 주셔서 감사합니다. 그리고 C# woks에 대해 많은 것을 가르쳐 주셨습니다. –