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();}