Какова сделка с свойством ToolStrip RenderMode?

Я никогда не понимал, для чего предназначено это свойство. Я вижу, что он заметно меняет дизайн инструментальной панели, и я считаю, что установка его в System in Windows XP значительно улучшает стиль WinForms.

Есть ли здесь более глубокий смысл? Может ли вообще измениться способ управления, и какой режим вы бы рекомендовали использовать?

Спасибо.

Ответ 1

Свойство 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()