2009-11-18 4 views
1

내 응용 프로그램의 menustrip 바로 아래에 툴팁을 표시해야하지만 각각에 대해 RenderMode = Professional을 설정해도 동일한 결과가 제공되지 않습니다. 둘 다 배경 그라데이션을 표시하지만 동일한 그라디언트는 표시하지 않습니다.ToolStrip 대 MenuStrip - 렌더링을 동일하게 만들 수 있습니까?

도구 스트립에 menustrip 렌더링을 사용하는 방법이 있습니까? 또는 하위 클래스 렌더러에서 수행 할 수있는 그래디언트를 직접 구현하는 방법에 대해 조언 해 줄 수 있습니까?

는 나중에 추가 : nobugz- 많은 감사를 아래에 그의 대답. 유용한 자료는 this answer에도 있습니다.
한 가지 더 많은 문제가 있습니다. ToolStripProfessionalRenderer에서 내 사용자 지정 렌더러를 기반으로하고 OnRenderToolstripBackground를 재정의하면 툴팁에서 곡선이 오른쪽 코너에 표시되지만 MenuStrip에서는 그렇지 않습니다. 배경 렌더러를 채우기 위해 다른 영역을 제공하는 내부 논리가 있습니까? 테두리 렌더링을 해제했다. (아무것도하지 않는 함수로 대체).

답변

1

나는 그것을 보지 못했지만 그것이 문제라고 상상할 수 있습니다.

Public Class Form1 
    Public Sub New() 
     InitializeComponent() 
     MenuStrip1.Renderer = New MyRenderer() 
    End Sub 

    Private Class MyRenderer 
     Inherits ToolStripProfessionalRenderer 
     Protected Overrides Sub OnRenderItemBackground(ByVal e As ToolStripItemRenderEventArgs) 
      MyBase.OnRenderMenuItemBackground(e) 
     End Sub 
    End Class 
End Class 
0

당신은 서로의 위에, DockStyle.Top를 사용하여 두 개의 패널을 고정 할 수 있습니다, 그리고 그들 각각에 MenuStrip를 추가 :이 두 메뉴 항목과의 ToolStrip 항목에 대해 동일한 배경 렌더러를 사용하도록 렌더러를 재정의합니다. 나는 내 앱에서 똑같이했는데, 다소 외형 적 장소에 약간의 MenuStrips이 필요했다. 컨 티 구오 배경을 사용하면 좋은 결과를 얻을 수 있습니다.

관련 문제