Как обстоят дела со свойством ToolStrip RenderMode? - PullRequest
10 голосов
/ 14 июня 2009

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

Есть ли здесь какой-то более глубокий смысл? Изменится ли способ визуализации элемента управления и какой режим вы бы порекомендовали использовать?

Спасибо.

1 Ответ

14 голосов
/ 14 июня 2009

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

Просто убедитесь, что в вашем событии загрузки формы или в какой-либо другой области, вызываемой перед использованием панели инструментов, вы назначаете свой собственный инструмент визуализации для своей панели инструментов:

  myToolStrip.Renderer = New CustomProfessionalRenderer()
...