Introduction
Why another Tool
Strip or Status Strip? The standard ToolStrip/StatusStrip is too limited in functionality and I
couldn't find a custom control written that did all that I wanted. This is a
User Control with Microsoft Office 2007 Visual Style. It is simple to use, just
drop it on the form, and use it like the normal ToolStrip or
StatusStrip Control.
Background
MBToolStrip/MBStatusStrip is a ToolStrip/StatusStrip
which inherits all the properties of simple ToolStrip and StatusStrip control.
I added Microsoft Office 2007 like Visuals in MBMenuStrip/MBToolStrip. The language used
is VB.NET. There are so many classes which provides same functionality, but for
that we have to write minimum two lines of code to add that renderer class in
our application. MBToolStrip/MBStatusStrip
is the MenuStrip which already contains MBMenuRenderer
Class You Just add the reference of MBToolStrip.Dll
and used it by Dragging and Dropping in your application.
Code
The concept for
this Tool Strip came from the Microsoft Office 2007 Tool Strip and Status Strip.
I organized methods of MBMenuRenderer
into layers like this:
Following methods
which are responsible for rendering simple Tool Strip and Status Strip like
Microsoft office.
This method Render
Background of MBToolStrip/MBStatusStrip
item:
Private Sub RenderToolButtonBackground(ByVal g As Graphics, ByVal button As ToolStripButton, ByVal toolstrip As ToolStrip)
If (button.Enabled) Then
If (button.Checked) Then
If (button.Pressed) Then
DrawGradientToolItem(g, button, _itemToolItemPressedColors)
ElseIf (button.Selected) Then
DrawGradientToolItem(g, button, _itemToolItemCheckPressColors)
Else
DrawGradientToolItem(g, button, _itemToolItemCheckedColors)
End If
Else
If (button.Pressed) Then
DrawGradientToolItem(g, button, _itemToolItemPressedColors)
ElseIf (button.Selected) Then
DrawGradientToolItem(g, button, _itemToolItemSelectedColors)
End If
End If
Else
If (button.Selected) Then
Dim mousePos As Point = toolstrip.PointToClient(Control.MousePosition)
If (Not button.Bounds.Contains(mousePos)) Then DrawGradientToolItem(g, button, _itemDisabledColors)
End If
End If
End Sub
This method Render
Image of MBToolStrip/MBStatusStrip
Item:
Protected Overrides Sub OnRenderItemImage(ByVal e As System.Windows.Forms.ToolStripItemImageRenderEventArgs)
If TypeOf (e.ToolStrip) Is ContextMenuStrip Or TypeOf (e.ToolStrip) Is ToolStripDropDownMenu Then
If Not (e.Image Is Nothing) Then
If (e.Item.Enabled) Then
e.Graphics.DrawImage(e.Image, e.ImageRectangle)
Else
ControlPaint.DrawImageDisabled(e.Graphics, e.Image, _
e.ImageRectangle.X, _
e.ImageRectangle.Y, _
Color.Transparent)
End If
End If
Else
MyBase.OnRenderItemImage(e)
End If
End Sub
This method Handles
Text of MBToolStrip/MBStatusStrip:
Protected Overrides Sub OnRenderItemText(ByVal e As System.Windows.Forms.ToolStripItemTextRenderEventArgs)
If TypeOf (e.ToolStrip) Is MenuStrip Or TypeOf (e.ToolStrip) Is ToolStrip Or _
TypeOf (e.ToolStrip) Is ContextMenuStrip Or _
TypeOf (e.ToolStrip) Is ToolStripDropDownMenu Then
If (Not e.Item.Enabled) Then
e.TextColor = _textDisabled
Else
If (TypeOf (e.ToolStrip) Is MenuStrip And Not e.Item.Pressed And Not e.Item.Selected) Then
e.TextColor = _textMenuStripItem
ElseIf (TypeOf (e.ToolStrip) Is StatusStrip And Not e.Item.Pressed And Not e.Item.Selected) Then
e.TextColor = _textStatusStripItem
Else
e.TextColor = _textContextMenuItem
End If
Using clearTypeGridFit As UseClearTypeGridFit = New UseClearTypeGridFit(e.Graphics)
MyBase.OnRenderItemText(e)
End Using
End If
Else
MyBase.OnRenderItemText(e)
End If
End Sub
Using
the Code
It is very easy to
use the MBToolStrip/MBStatusStrip in your
application. Just add the reference of the provided DLL to your application and
just drag and drop.
History
- MBToolStrip
and MBStatusStrip Version 1.0.