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  to leave a comment
Access denied
Access denied