The following code draws a rectangle around the toolbar button when a user moves their mouse over it. This looks better if the Appearance property of the toolbar is set to Flat. Instead of refreshing the toolbar, which makes it flicker, a new rectangle the color of the button is drawn to make sure only one button at a time has different border:
private void ToolBar_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
Point p = new Point(MousePosition.X,MousePosition.Y);
p = ToolBar.PointToClient(p);
Graphics g = ToolBar.CreateGraphics();
foreach (ToolBarButton tb in ToolBar.Buttons)
{
if (tb.Rectangle.Contains(p))
{
g.DrawRectangle(new Pen(new SolidBrush Color.SteelBlue),1.5F),tb.Rectangle);
}else{
g.DrawRectangle(new Pen(new SolidBrush (Color.LightGray),1.5F),tb.Rectangle);
}
}
g.Dispose();
}