WinForms ContextMenu에 구분 기호를 추가하는 방법은 무엇입니까?


103

내 통제권 안에 다음이 있습니다.

ContextMenu = new ContextMenu();
ContextMenu.MenuItems.Add(new MenuItem("&Add Item", onAddSpeaker));
ContextMenu.MenuItems.Add(new MenuItem("&Edit Item", onEditSpeaker));
ContextMenu.MenuItems.Add(new MenuItem("&Delete Item", onDeleteSpeaker));
ContextMenu.MenuItems.Add( ??? );
ContextMenu.MenuItems.Add(new MenuItem("Cancel"));

이 ContextMenu에 구분선을 추가하는 방법은 무엇입니까?


이름 앞에 '&'를 사용하는 것은 무엇입니까?
Gerben Limburg

3
@GerbenLimburg : '&'를 사용하면 사용자가 사용할 수있는 바로 가기 키 ( " 니모닉 " 이라고 함 )를 설계 할 수 있습니다 (Alt와 결합).
Otiel 2012 년

답변:


225

나는 그것이 단지 대시라고 믿는다.

ContextMenu.MenuItems.Add("-");

이것은 Windows에서 제대로 문서화되지 않은 많은 항목 중 하나입니다. 몇 달 전에이 작업을 수행해야했습니다. Win32에서 할 수 있다는 것을 기억했지만 구문은 기억하지 못했습니다. 나는 그것을 찾기 위해 오래된 VC ++ 6 파일을 가져 왔습니다. 그건 그렇고, 나는 아직도 때때로 "Petzold Book"을 몇 가지 언급합니다. 와우, 늙어가는 느낌 이네요 ...
Brad Bruce

24
확실히이 더 읽을 ContextMenu.Items.Add(new ToolStripSeparator()); 참조 가브리엘의 대답은
MarkJ

9
@MarkJ, ContextMenu에는 더 이상 Items 속성이 없습니다. ToolStripSeperator ()도 ContextMenu.Items.Add ()에 대한 유효한 인수가 아닙니다.
Cypher 2012-06-25

3
Visual Studio Windows Forms 디자이너에서 메뉴 디자이너의 "여기에 입력"입력 필드에 하이픈을 입력하여 시각적으로이 작업을 수행 할 수 있습니다. 구분 기호는 디자이너에 즉시 나타납니다.
Buggieboy 2013 년

48

이것은 대시와 마찬가지로 작동하며 Winforms가 대시를 ToolStripSeparator로 변환한다고 생각합니다. 이 솔루션은 코드를 유지해야하는 모든 사람에게 더 분명하다고 생각합니다.

yourContextMenu.Items.Add(new ToolStripSeparator());

5
.Net 2 winforms ContextMenu 클래스에는 Items 속성이 없습니다.
앤드류스

6
이것은 ContextMenuStrip이 아닌 ContextMenuStrip에서만 가능합니다.
Gerben Limburg

1
그리고 당신은 할 수 yourContextMenu.Items.Insert(3, new ToolStripSeparator());있지만 Insert대시 "-"는 할 수 없습니다 .
Otiel

1
완벽한 고마워요
가루다 프라 사드 K


7

Designer를 사용하는 경우 메뉴 항목의 이름을 지정하는 것과 동일한 방식으로 단일 하이픈 "-"를 텍스트로 배치합니다. Enter 키를 누르면 구분 기호가 생성됩니다.



1

가로 구분 기호는 멋지지만 대신 세로 구분 기호를 원한다면 어떨까요?

글쎄, 걱정하지 마라-당신은 하나를 가질 수 있습니다!

구분자 다음의 첫 번째 BarBreak속성을 trueon으로 설정 합니다 MenuItem.

var item = new MenuItem(text: "Settings", onClick: SomeFunction) { BarBreak = true };

여기에 이미지 설명 입력

MenuItems컬렉션에 항목을 추가하려면 : yourContextMenu.MenuItems.Add(item).


0

아마도 이후 버전의 Visual Studio에서는이 작업을 더 간단하게 만들었습니다. VS 2012를 사용하고 있습니다. 양식 디자이너를 통해 구분 기호를 추가 할 수 있습니다. 1) MenuStrip을 선택 / 생성합니다. 2) "여기에 입력"에서 마우스 오른쪽 버튼을 클릭합니다. 3) "삽입"을 선택합니다. 4) "Separator"를 선택합니다. 5) 새 구분 기호를 위에 놓을 텍스트로 끕니다. 끝난.


0

ContextMenu보유 생성자 의 어레이 수신 MenuItem개체. 말할 필요도없이 해당 배열에 문자열을 추가 할 수 없습니다. 그러나 다음을 추가하여 구분자를 얻을 수 있습니다 new MenuItem("-").

    var contextMenu = new ContextMenu(new[]
    {
        timerMenuItem,
        keypressMenuItem,
        new MenuItem("-"), // Seperator
        new MenuItem(text: "Exit", onClick: (sender, args) => Application.Exit())
    });
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.