2008-11-12 8 views
2

저는 ToolStripComboBox와 ToolStripButton이 포함 된 도구 상자가 있습니다. 두 가지 모두 ContextMenuStrip을 추가하고 싶지만 toolstrip의 상황에 맞는 메뉴를 설정할 수 없기 때문에 toolstrip 또는 다른 내용에 직접 액세스 할 필요가 없습니다. 되는 ToolStripComboBox의 ContextMenuStrip을 설정 ContextMenuStrip을 ToolStripButton에 어떻게 추가합니까?

은 간단합니다 :

myToolStripComboBox.ComboBox.ContextMenuStrip = myContextMenu; 

을하지만 ToolStripButton에 대한 명백한 해당가 없습니다. ContextMenuStrip을 ToolStripButton에 어떻게 추가합니까?

답변

4

제프 예이츠 (Jeff Yates)가 제안한 것은 효과가 있다고 제안했습니다.

그러나 다른 대안으로는 파생 클래스 (MyToolSTripButton, MyToolStripTextBox ... 등)를 사용하여 디자인 타임에 설정할 수있는 ContextMenuStrip 속성을 제공하고 파생 클래스에서 마우스 오른쪽 버튼을 감지하거나 다른 이벤트가 컨텍스트 메뉴의 표시를 트리거합니다.

관심있는 항목에만 필요한 지식을 오프로드합니다.

다음은 ToolStripTextBox를 항목으로 사용하는 예제입니다.

public class MyTextBox : ToolStripTextBox 
{ 
    ContextMenuStrip _contextMenuStrip; 

    public ContextMenuStrip ContextMenuStrip 
    { 
     get { return _contextMenuStrip; } 
     set { _contextMenuStrip = value; } 
    } 

    protected override void OnMouseDown(MouseEventArgs e) 
    { 
     if (e.Button == MouseButtons.Right) 
     { 
      if (_contextMenuStrip !=null) 
       _contextMenuStrip.Show(Parent.PointToScreen(e.Location)); 
     } 
    } 
} 
+0

작은 일 : 나는 대부분의 사람들이 더 기분 좋은'contextMenu.Show (Cursor.Position)를 사용하여 찾을 것이라고 생각, 대신'Parent.PointToScreen (e.Location)'사업의'하는 것이다 보통 첫 번째 ToolStripItem에 대해 메뉴를 올바르게 배치하십시오. – Toji

0

ToolStripComboBox에 "System.Windows.Forms.ComboBox"컨트롤이 포함되어 있지만 "ToolStripButton"에는 "System.Windows.Forms.Control"이 포함되어 있지 않기 때문입니다. Toolstip에서 유지 관리하는 버튼의 특수 도구 스트립 항목입니다.

toolstip에서 ContextMenu를 사용하거나 toolstripbutton 항목에 드롭 다운을 추가 할 수 있습니다.

2

컨텍스트 메뉴를 ToolStrip으로 설정 한 다음 상황에 맞는 메뉴 또는 관련 이벤트의 팝업을 처리하고 마우스가 어느 단추에 있는지 테스트하여 ToolStrip의 상황에 맞는 메뉴를 표시해야하는지 여부와 그 내용을 확인해야합니다 포함해야합니다.

0

좋은 질문입니다. toolstrip (myToolStripButton.Parent 또는 이와 비슷한 것)에 액세스하여 컨텍스트 메뉴를 첨부 할 수 있습니다.

관련 문제