2014-12-24 3 views
3

첫째, 내 현재의 UI 같은 모양을 조금 개요 다음 ToolStripControlHost에서 물건 이외의 다른 모든 표준 윈폼 것을"핀"제어

Current UI

참고.

간단히 말해서 ToolStripControlHost와 비슷한 것을 갖고 싶지만 메뉴의 맨 아래에 "고정"해야합니다. 대부분 항목이 많으면 나머지 부분처럼 스크롤되지 않습니다. 메뉴 항목.

주위를 검색 한 후 그림 맞춤 설정이 해결책 일 수 있다고 결론을 내 렸습니다. 그래도이 경우인지 모르겠다. 여기

몇 가지 샘플 코드,하지만 나는 그것이 얼마나 유용 확실하지 않다 :

public ToolStripDropDownButtonContainer(ToolStripDropDownButton button) 
{ 
    this.UIControl = button.GetCurrentParent(); 
    this.Button = button; 

    if (this.Button.Tag == null) 
    { 
     this.Button.Tag = true; 

     this.Button.DropDownDirection = ToolStripDropDownDirection.AboveLeft; 
     ToolStripDropDownMenu menu = (ToolStripDropDownMenu)this.Button.DropDown; 

     menu.SuspendLayout(); 
     try 
     { 
      menu.BackColor = Color.White; 
      menu.ShowImageMargin = false; 
      menu.ShowCheckMargin = false; 
      menu.AutoSize = true; 
      menu.Margin = Padding.Empty; 
      menu.Padding = Padding.Empty; 
      menu.GripMargin = Padding.Empty; 
      menu.GripStyle = ToolStripGripStyle.Hidden; 
      menu.MinimumSize = new Size(310, 0); 
      menu.MaximumSize = menu.MinimumSize; 
      // TODO pin panel (or some control) to the bottom-side of the menu 
     } 
     finally 
     { 
      menu.ResumeLayout(); 
     } 
    } 
} 
+0

나는 올바르게 이해하고 있었습니까? 당신은 팝업에서 2 개의 "영역"을 찾고 있습니다 : 상단은 3-4 가지가 스크롤되고 하단은 고정되어 있습니다. 고정 된 컨트롤은 무엇인지 모르지만 ToolStripControlHosts를 중첩 시키려고 했습니까? 당신은 스크롤러와 스크롤러가 아닌 2 가지를 호스팅하는 다른 하나의 내부에 가지고 있습니까? – Plutonix

+0

@Plutonix 예, 그런 일을 끝내게되었습니다. – Christian

답변

3

이 문제에 대한 나의 해결책은 완전히 정상 메뉴 컨트롤 포함 시스템을 사용하지 않는 대신 메뉴 쇼를하는 것입니다 FlowLayoutPanel 대신 내 메뉴 항목이 포함되어 있습니다.

UI를 사용하여 패널이 제대로 작동하도록 여러 가지 유용한 기능을 추가해야했습니다. 이 접근법의 또 다른 이점은 시스템에 대한 더 많은 유연성과 제어입니다.

하위 항목이 많을 때 성능 저하가 있음을 눈치 챘지만 별도로 조사하겠습니다.