ToolStrip的RenderMode属性有什么用处?

Pau*_*ley 10 .net toolstrip winforms

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

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

谢谢.

Ste*_*bob 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
Run Code Online (Sandbox Code Playgroud)

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

  myToolStrip.Renderer = New CustomProfessionalRenderer()
Run Code Online (Sandbox Code Playgroud)