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

c# – 工具提示气球显示位置(用于错误通知)

发布时间:2020-12-15 21:10:32 所属栏目:百科 来源:网络整理
导读:我前一段时间问了一个与此密切相关的问题: Alternative way to notify the user of an error 简而言之,我试图找到一种快速简便的方法,在不使用弹出窗口的情况下通知用户错误. 现在我使用工具提示气球实现了这一点.问题是,即使我给它一个大致的位置,气泡的小
我前一段时间问了一个与此密切相关的问题:
Alternative way to notify the user of an error

简而言之,我试图找到一种快速简便的方法,在不使用弹出窗口的情况下通知用户错误.

现在我使用工具提示气球实现了这一点.问题是,即使我给它一个大致的位置,气泡的小尖头部分也会根据消息的大小改变位置(见附图).通常,我会使用SetToolTip()并为其分配一个控件,以便它始终指向该控件.但是,控件是状态栏中的标签或图像.

private void ShowTooltipBalloon(string title,string msg)
{
    if (this.InvokeRequired)
    {
        this.BeginInvoke(new EventHandler(delegate { ShowTooltipBalloon(title,msg); }));
    }
    else
    {
        ToolTip tt = new ToolTip();
        tt.IsBalloon = true;
        tt.ToolTipIcon = ToolTipIcon.Warning;
        tt.ShowAlways = true;
        tt.BackColor = Color.FromArgb(0xFF,0xFF,0x90);
        tt.ToolTipTitle = title;

        int x = this.Width - lblLeftTarget.Width - lblVersion.Width - toolStripStatusLabel8.Width - 10;
        int y = this.Height - lblLeftConnectImg.Height - 60;
        tt.Show(msg,this,x,y,5000);
    }
}

这远远超出了要求的范围,但我的老板对于细节来说是一个坚持,所以除了解决这个问题,我必须快速解决它.我需要一些相对容易实现的东西,它不会“摇摆”我即将发布的当前软件.

话虽这么说,我当然会听取任何建议,无论是否可实施.至少我可能会学到一些东西.

*编辑:似乎我的图像没有显示.我不知道这只是我的电脑.那好吧…

解决方法

我知道这是一个相当古老的问题,我想我已经错过了近4年的交付期限……但我相信这可以解决您遇到的问题:

private void ShowTooltipBalloon(string title,msg); }));
    }
    else
    {
        // the designer hooks up to this.components
        // so lets do that as well...
        ToolTip tt = new ToolTip(this.components);

        tt.IsBalloon = true;
        tt.ToolTipIcon = ToolTipIcon.Warning;
        tt.ShowAlways = true;
        tt.BackColor = Color.FromArgb(0xFF,0x90);
        tt.ToolTipTitle = title;

        // Hookup this tooltip to the statusStrip control
        // but DON'T set a value 
        // because if you do it replicates the problem in your image
        tt.SetToolTip(this.statusStrip1,String.Empty); 

        // calc x
        int x = 0;
        foreach (ToolStripItem tbi in this.statusStrip1.Items)
        {
            // find the toolstrip item
            // that the tooltip needs to point to
            if (tbi == this.toolStripDropDownButton1)  
            {
                break;
            }
            x = x + tbi.Size.Width;
        }

        // guestimate y 
        int y = -this.statusStrip1.Size.Height - 50;
        // show it using the statusStrip control 
        // as owner
        tt.Show(msg,this.statusStrip1,5000);
    }
}

(编辑:李大同)

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

    推荐文章
      热点阅读