c# – 如何防止工具提示在自定义控件中闪烁?

前端之家收集整理的这篇文章主要介绍了c# – 如何防止工具提示在自定义控件中闪烁?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我做了一个自定义控件,当条件满足时,我想显示一个工具提示
protected override void OnMouseMove(MouseEventArgs e)
{
    base.OnMouseMove(e);

    var plannedItem = GetPlannedItemByPosition(e.Location);

    if (plannedItem != null)
        _tooltip.SetToolTip(this,plannedItem.Description);
    else
        _tooltip.RemoveAll();
}

代码工作正常,除了工具提示闪烁的面孔.

这个自定义控件描绘了OnPaint事件中的所有信息,也许这与它有关?如果是这样,我怎样才能防止工具提示闪烁?

解决方法

在鼠标光标位置显示工具提示时会发生这种情况.只要提示窗口出现,Windows就会注意到鼠标位于该窗口中并发布了MouseMove消息.这使得工具提示消失了.这使Windows将MouseMove消息发送到您的控件,运行OnMouseMove()方法.这使得工具提示再次出现. Etcetera,你会看到工具提示迅速闪烁.

通过以下任何方法解决此问题:

>显示工具提示远离鼠标位置,因此它不会与鼠标光标重叠>仅在需要更改时更新/显示工具提示>将控件的Capture属性设置为true,以便工具提示不会获得MouseMove消息

猜你在找的C#相关文章