Articles in this section
Category / Section

How to set different tooltips for the two buttons and the slider of the WinForms TrackBarEx?

3 mins read

Tooltips

It is possible to set different tool tips for the two buttons and the slider by customizing the TrackBarEx.

C#

public class CustomTrackBarEx : TrackBarEx
{
   private Rectangle decRect, incRect, sliderRect;
   private ToolTip decTooltip = null;
   private ToolTip incTooltip = null;
   private ToolTip sliderTooltip = null;
   private string incBtnTooltip = "Increase";
   private string decBtnTooltip = "Decrease";
   private string sliderBtnTooltip = "Slider";
   public CustomTrackBarEx()
   {
      decTooltip = new ToolTip();
      decTooltip.Active = false;
      incTooltip = new ToolTip();
      incTooltip.Active = false;
      sliderTooltip = new ToolTip();
      sliderTooltip.Active = false;
   }
   protected override Rectangle DecreaseButtonBounds
   {
       get
       {
           decRect = base.DecreaseButtonBounds;
           return base.DecreaseButtonBounds;
       }
   }
   protected override Rectangle IncreaseButtonBounds
   {
       get
       {
           incRect = base.IncreaseButtonBounds;
           return base.IncreaseButtonBounds;
       }
   }
   protected override Rectangle SliderBounds
   {
      get
      {
          sliderRect = base.SliderBounds;
          return base.SliderBounds;
      }
   }
   protected override void Dispose(bool disposing)
   {
      if(incTooltip != null)
      {
         incTooltip.Dispose();
         incTooltip = null;
      }
      if(decTooltip != null)
      {
         decTooltip.Dispose();
         decTooltip = null;
      }
      if(sliderTooltip != null)
      {
         sliderTooltip.Dispose();
         sliderTooltip = null;
      }
      base.Dispose(disposing);
   }
   public string IncreaseButtonTooltip
   {
       get { return incBtnTooltip; }
       set { incBtnTooltip = value; }
   }
   public string DecreaseButtonTooltip
   {
       get { return decBtnTooltip; }
       set { decBtnTooltip = value; }
   }
   public string SliderBtnTooltip
   {
       get { return sliderBtnTooltip; }
       set { sliderBtnTooltip = value; }
   }
   protected override void OnMouseMove(MouseEventArgs e)
   {
       if(incRect.Contains(e.Location))
       {
          incTooltip.SetToolTip(this, IncreaseButtonTooltip);
          incTooltip.Active = true;
       }
       else
       {
          incTooltip.Active = false;
       }
       if(decRect.Contains(e.Location))
       {
          decTooltip.SetToolTip(this, DecreaseButtonTooltip);
          decTooltip.Active = true;
       }
       else
       {
          decTooltip.Active = false;
       }
       if(sliderRect.Contains(e.Location))
       {
          sliderTooltip.SetToolTip(this, SliderBtnTooltip);
          sliderTooltip.Active = true;
       }
       else
       {
          sliderTooltip.Active = false;
       }
       base.OnMouseMove(e);
   }
}

VB

Public Class CustomTrackBarEx Inherits TrackBarEx
    Private decRect, incRect, sliderRect As Rectangle
    Private decTooltip As ToolTip = Nothing
    Private incTooltip As ToolTip = Nothing
    Private sliderTooltip As ToolTip = Nothing
    Private incBtnTooltip As String = "Increase"
    Private decBtnTooltip As String = "Decrease"
    Private sliderBtnTooltip_Renamed As String = "Slider"
    Public Sub New()
        decTooltip = New ToolTip()
        decTooltip.Active = False
        incTooltip = New ToolTip()
        incTooltip.Active = False
        sliderTooltip = New ToolTip()
        sliderTooltip.Active = False
    End Sub
    Protected Overrides ReadOnly Property DecreaseButtonBounds() As Rectangle
        Get
             decRect = MyBase.DecreaseButtonBounds
             Return MyBase.DecreaseButtonBounds
        End Get
    End Property
    Protected Overrides ReadOnly Property IncreaseButtonBounds() As Rectangle
        Get
             incRect = MyBase.IncreaseButtonBounds
             Return MyBase.IncreaseButtonBounds
        End Get
    End Property
    Protected Overrides ReadOnly Property SliderBounds() As Rectangle
        Get
             sliderRect = MyBase.SliderBounds
             Return MyBase.SliderBounds
        End Get
    End Property
    Protected Overrides Overloads Sub Dispose(ByVal disposing As Boolean)
        If incTooltip IsNot Nothing Then
           incTooltip.Dispose()
           incTooltip = Nothing
        End If
        If decTooltip IsNot Nothing Then
           decTooltip.Dispose()
           decTooltip = Nothing
        End If
        If sliderTooltip IsNot Nothing Then
           sliderTooltip.Dispose()
           sliderTooltip = Nothing
        End If
        MyBase.Dispose(disposing)
    End Sub
    Public Property IncreaseButtonTooltip() As String
        Get
             Return incBtnTooltip
        End Get
        Set(ByVal value As String)
             incBtnTooltip = value
        End Set
    End Property
    Public Property DecreaseButtonTooltip() As String
        Get
            Return decBtnTooltip
        End Get
        Set(ByVal value As String)
            decBtnTooltip = value
        End Set
    End Property
    Public Property SliderBtnTooltip() As String
         Get
              Return sliderBtnTooltip_Renamed
         End Get
         Set(ByVal value As String)
              sliderBtnTooltip_Renamed = value
         End Set
    End Property
    Protected Overrides Sub OnMouseMove(ByVal e As MouseEventArgs)
         If incRect.Contains(e.Location) Then
            incTooltip.SetToolTip(Me, IncreaseButtonTooltip)
            incTooltip.Active = True
         Else
            incTooltip.Active = False
         End If
         If decRect.Contains(e.Location) Then
            decTooltip.SetToolTip(Me, DecreaseButtonTooltip)
            decTooltip.Active = True
         Else
            decTooltip.Active = False
         End If
         If sliderRect.Contains(e.Location) Then
            sliderTooltip.SetToolTip(Me, SliderBtnTooltip)
            sliderTooltip.Active = True
         Else
            sliderTooltip.Active = False
         End If
         MyBase.OnMouseMove(e)
End Sub

 

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Please sign in to leave a comment
Access denied
Access denied