加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:24:55 所属栏目:百科 来源:网络整理
导读:我做了一个自定义控件,当条件满足时,我想显示一个工具提示: protected override void OnMouseMove(MouseEventArgs e){ base.OnMouseMove(e); var plannedItem = GetPlannedItemByPosition(e.Location); if (plannedItem != null) _tooltip.SetToolTip(this,
我做了一个自定义控件,当条件满足时,我想显示一个工具提示:
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消息

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读