Создайте собственную подсказку и попробуйте это:
WPF Solution:
XAML:
<Button Canvas.Left="298" Canvas.Top="124" Height="34"
Name="button1" Width="106" IsKeyboardFocusedChanged="showToolTip">
Button
<Button.ToolTip>
<ToolTip>
Whatever
</ToolTip>
</Button.ToolTip>
</Button>
Общий обработчик событий: (Таким образом, все элементы управления могут ссылаться на этот обработчик событий вместо создания нового для каждого элемента управления)
public void showToolTip(object sender, DependencyPropertyChangedEventArgs e)
{
//Get tooltip from sender.
ToolTip tt = (ToolTip)(sender as Control).ToolTip;
//Places the Tooltip under the control rather than at the mouse position
tt.PlacementTarget = (UIElement)sender;
tt.Placement = PlacementMode.Right;
tt.PlacementRectangle = new Rect(0, (sender as Control).Height, 0, 0);
//Shows tooltip if KeyboardFocus is within.
tt.IsOpen = (sender as Control).IsKeyboardFocusWithin;
}
Решение WinForm: (Я знаю, что вы не просили об этом, но у меня было написано, так что я все равно опубликую.)
public class myUserControls: UserControl
{
[Category("Category for UserControl")]
public class ToolTipAdv : ToolTip
{
public ToolTipAdv (IContainer container) : base(container)
{
this.AutomaticDelay = 300;
this.BackColor = System.Drawing.SystemColors.Highlight;
this.ForeColor = System.Drawing.Color.White;
}
public void SetToolTip(Control ctrl, string caption)
{
ctrl.GotFocus += ShowToolTip;
base.SetToolTip(ctrl, caption);
}
public void ShowToolTip(object sender, EventArgs e)
{
string message = base.GetToolTip((Control)sender);
base.Show(message, (IWin32Window)sender, (sender as Control).Location);
}
}
}