La classe ToolTip déclenche son événement Popup juste avant de commencer à afficher l'info-bulle. Vous pouvez considérer cela comme le début de la période pendant laquelle l'info-bulle est affichée. La fin de cette période est l'une des deux choses; un événement MouseLeave sur le contrôle pour lequel l'info-bulle était affichée, indiquant que l'utilisateur ne pointe plus la souris sur ce que vous montriez avec l'info-bulle, ou le passage de la période AutoPopDelay de l'info-bulle après laquelle le ballon disparaîtra.
Donc, vous pouvez gérer cela avec du code dans votre Formulaire ou un autre contrôle contenant l'info-bulle, ressemblant à ceci:
private System.Windows.Forms.Timer ToolTipTimer = new Timer();
public MyControl()
{
myToolTip.Popup += ToolTipPopup;
ToolTipTimer.Tick += ToolTipTimerTick;
ToolTipTimer.Enabled = false;
}
private bool IsToolTipShowing { get; set; }
private Control ToolTipControl { get; set; }
private void ToolTipPopup(object sender, PopupEventArgs e)
{
var control = e.AssociatedControl;
//facultativement vérifier si nous sommes intéressés par la surveillance de l'info-bulle de ce contrôle
ToolTipControl = control;
ToolTipControl.MouseLeave += ToolTipMouseLeave;
ToolTipAutoPopTimer.Interval = myToolTip.AutoPopDelay;
ToolTipTimer.Start();
IsToolTipShowing = true;
}
//maintenant l'une de ces deux choses devrait arriver pour arrêter l'affichage de l'info-bulle sur le contrôle actuellement surveillé
public void ToolTipTimerTick(object sender, EventArgs e)
{
StopToolTip();
}
public void ToolTipMouseLeave(object sender, EventArgs e)
{
StopTimer();
}
private void StopTimer()
{
IsToolTipShowing = false;
ToolTipTimer.Stop();
ToolTipControl.MouseLeave -= ToolTipMouseLeave;
}