ToolStrip的RenderMode属性有什么用处?

时间:2009-06-14 15:47:08

标签: .net winforms toolstrip

我从未完全理解这个属性的设计目的。我可以看到它明显改变了工具条的设计,我发现在Windows XP上将它设置为System使得它更适合WinForms风格。

这里有更深层含义吗?控件的呈现方式是否会发生变化以及您建议使用哪种模式?

感谢。

1 个答案:

答案 0 :(得分:14)

RenderMode属性允许开发人员精确控制ToolStrip(或ContextMenu)的显示。将RenderMode设置为ManagerRenderMode时,可以创建自定义渲染器,以允许您自定义ToolStrip的外观。例如,下面的代码绘制一个灰色渐变作为ContextMenu中当前鼠标悬停在其上的项目的背景。

Class CustomProfessionalRenderer
   Inherits ToolStripProfessionalRenderer

   Protected Overrides Sub OnRenderMenuItemBackground(ByVal e As ToolStripItemRenderEventArgs)
      Dim r As Rectangle = e.Item.ContentRectangle

      If e.Item.Selected Then
         Dim b = New LinearGradientBrush(r, Color.FromArgb(255, 227, 224, 215), Color.White, LinearGradientMode.Vertical)
         Try
            e.Graphics.FillRectangle(b, e.Item.ContentRectangle)
         Finally
            b.Dispose()
         End Try
      End If
   End Sub

End Class

只需确保在使用工具条之前在Form Load事件或其他某个区域调用,您可以将自定义渲染器分配给工具条:

  myToolStrip.Renderer = New CustomProfessionalRenderer()