2010-05-24 6 views
2

폼에 추가 한 MenuStrip이 있고 그 중 하나의 드롭 다운 메뉴에 텍스트 상자가 있습니다. 필자가 텍스트 상자에 엔터를 치면 함수를 실행 한 다음 드롭 다운 메뉴를 닫고 싶습니다. 입력 부분을 처리하는 방법을 알고 있지만 MenuStrip 드롭 다운 메뉴를 닫는 방법을 알지 못합니다. 아무도 이것을하는 방법을 아는가?프로그래밍 방식으로 MenuStrip 닫기

+0

제목에 태그 (C#)를 넣지 마십시오. 태그에 남겨주세요. –

+0

죄송합니다. 다시는 발생하지 않습니다. – Nilbert

답변

4

소유자의 숨기기() 메소드를 호출하십시오. 예를 들어 : 그래서,

private void toolStripTextBox1_KeyDown(object sender, KeyEventArgs e) { 
     if (e.KeyData == Keys.Enter) { 
      e.SuppressKeyPress = true; 
      toolStripTextBox1.Owner.Hide(); 
     } 
    } 
+0

다른 메뉴의 하위 메뉴 인 경우 어떻게해야합니까? 하위 메뉴의 체인을 올라가서 메뉴의 뿌리까지 가려면 어떻게해야합니까? 나는 Owner.Owner를 시도했으나 정의되지 않았으며 Owner.Parent는 "Parent not set"의 예외를 초래합니다. – Nilbert

+0

숨기려는 특정 메뉴 항목의 HideDropDown() 메소드를 호출하기 만하면됩니다. –

2

당신이 시도 할 수

for(int x = 0; x < menu.Items.Count; x++) ((System.Windows.Forms.ToolStripDropDownItem)menu.Items[x]).HideDropDown();

0

이 오래된 질문이다 (나를 위해 일한),하지만 난 같은 문제에 달려 솔루션을 알아 냈어 밖에있는 다른 사용자 :

텍스트 상자 (다른 컨트롤)의 중첩 방식에 관계없이 기본 메뉴 항목의 HideDropDown() 메서드를 호출해야합니다.

예를 들어, 파일, 편집, 도움말이있는 도구 모음이 있다고 가정 해 보겠습니다. 편집 메뉴에서, 당신은 당신의 텍스트 상자 어딘가에 중첩 된 :

EditMenuItem에게 -> FindMenuItem -> SearchTextBoxHere

당신은 당신의 텍스트 상자의를 keyDown 이벤트에 편집 메뉴의 HideDropDown() 메서드를 호출합니다 :

EditMenuItem .HideDropDown();

관련 문제