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