2010-05-06 12 views
29

MenuStrip (도구 상자의)을 양식 디자인에 추가하면 많은 기본 Windows 응용 프로그램과 같은 메뉴 모음이 나타나지 않는 것으로 나타났습니다. 대신 Visual Studio와 같은 메뉴 막대가 나타납니다. MenuStrip의 스타일 설정은 훨씬 더 일반적인 기본 메뉴 막대를 모방 한 것으로 보이지 않습니다.Windows Forms의 표준 Windows 메뉴 모음

내 Windows Forms 응용 프로그램에 메모장, 작업 관리자 및 기타에서 볼 수있는 것과 비슷한 메뉴 모음을 추가 할 수 있습니까? (바람직하게는 디자이너와,하지만 난 프로그램 중 하나를 추가 상관하지 않겠습니다.) 그림

스크린 샷 : 나는 일반적으로 MenuStrip의 RenderMode 미니멀를 제공 System에, 하나의 색상을 설정

+1

그것을 메모장 또는 Windows 탐색기에서 볼 수있는 메뉴에 비해 그 차이가 무엇에 대해? 그것은 2003 년 사무실에서 발견 된 것과 매우 유사하므로 이례적인 것은 아닙니다. –

답변

46

이것은 쉽습니다.

도구 상자로 이동하여 안에 마우스 오른쪽 버튼으로 클릭하고 "항목 선택"을 선택하십시오. 대화 상자가로드되고 나타나면 MainMenu가 나타날 때까지 아래로 스크롤하십시오. 툴박스에 추가하면 네이티브 메뉴 바를 얻을 수 있습니다!

해피 코딩!

+3

와우, 그런 도구 상자에 물건을 추가 할 수 있을지 전혀 몰랐습니다. 고마워요! – BoltClock

+0

여러분을 환영합니다. 행복하게 도와 줬어. :) –

+5

나는이 구성 요소를 알지 못했다. 나는 그것을줬고, 매우 제한적이었다 : 나는 디자이너의 색깔을 변경할 수 없었고, 지역화를 지원하지 않았으며, 이미지가 없다. 이것이 당신이 원하는 것이라면, 그것을 위해 간다. 이것이 MenuStrip에 의해 대체 된 이유가 * 있습니다. –

3

을 메뉴 (그라디언트가 없거나 그렇게 퇴폐적 인 것).

그 정도면 충분하지 않다면, 당신은 당신이 원하는 것을 얻기 위해 저급 농구를 뛰어 넘을 가능성이 있습니다.

18

이 같은 양식의 Menu 속성을 설정하여이 작업을 수행 할 수 있습니다 :

private void Form1_Load(object sender, EventArgs e) 
{ 
    this.Menu = new MainMenu(); 
     MenuItem item = new MenuItem("File"); 
     this.Menu.MenuItems.Add(item); 
      item.MenuItems.Add("Save", new EventHandler(Save_Click)); 
      item.MenuItems.Add("Open", new EventHandler(Open_Click)); 
     item = new MenuItem("Edit"); 
     this.Menu.MenuItems.Add(item); 
      item.MenuItems.Add("Copy", new EventHandler(Copy_Click)); 
      item.MenuItems.Add("Paste", new EventHandler(Paste_Click)); 
     // etc ... 
} 

private void Save_Click(object sender, EventArgs e) 
{ 
    // save 
} 

이 메뉴는 "정상"시스템 메뉴처럼 보일 것입니다.

그래도 디자이너 지원을 찾을 수 없습니다. 내 방어에서, 나는 진짜 열심히 시도하지 않았다.

+0

더 쉬운 해결책이 있습니다. "항목 선택"대화 상자에서 찾을 수 있습니다. 이 구성 요소는 "MainMenu"라고하며 폼 디자이너를 지원합니다. –

+0

좋은 답변입니다. 디자이너를 사용하는 것만 큼 단순하거나 친숙하지 않을 수도 있지만 downvote만한 가치는 없습니다. – BoltClock

+0

동의합니다. 이것은 훌륭한 대답이며 IDE가 설치되지 않은 컴퓨터에서 프로젝트를 진행할 때 편리 할 것입니다! 나는 방금 upvote하려고했지만 질문은 너무 오래되었다고, 질문이 편집 될 때까지 투표를 할 수 없다, 응? –

7

MainMenu 구성 요소를 사용하는 대신 MenuStrip 구성 요소에 대한 고유 한 렌더러를 만들 수 있습니다. 여기서 이점은 이미지를 MenuStripItem 개체에 추가 할 수 있다는 것입니다.

NativeRenderer

이 렌더러의 생성자에 적용 할 수있는 다양한 테마가 있습니다 : 여기에 사용자 정의 렌더러에 대한 페이스트 빈입니다. 원주민 테마를 보려면 모두들 사용해보십시오. MenuStrip 렌더러 속성에 단순히 인스턴스 설정이 렌더러를 사용하려면

menuStrip.Renderer = new NativeRenderer([theme]); 
+1

오우,이게 유용 해 보입니다! 내가 그것을 사용하여 끝내면 (나는 친환경 목초지 (http://msdn.microsoft.com/en-us/library/ms754130.aspx)로 조금 옮겼습니다), 나는 출처. 아니면 공개 도메인입니까? :) – BoltClock

+0

죄송합니다 BoltClock, 나는 꽤 오랫동안 여기에 숨어 ​​있지 않았습니다. 나는 원래 저자 (code.google.com 어딘가에 게시 됨)를 찾으려고 노력해 왔습니다. 내가 찾으면 원래 링크를 게시 할 것입니다. –

+0

@BoltClock 찾았습니다! 이 천재에 대한 모든 공헌을하십시오 : http://code.google.com/p/szotar/source/browse/trunk/Client/Szotar.WindowsForms/Base/NativeToolStripRenderer.cs –

관련 문제