我前一段时间问了一个与此密切相关的问题:
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); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。