日期:2014-05-19  浏览次数:21000 次

[WinForm]tooltip的问题。
发现一个问题,我使用
this.toolTip1.Show( "测试文本 ",   this.button1,1000);

显示一个tooltip,但是发现出来的样式和鼠标放上自动出的不一样,鼠标放上自动出的是出现在控件的上方,而使用show出来的是出现在控件的下方。怎样能使show出来的也出现在控件的上方啊?

鼠标放上自动出的图片
http://shanmin2005.bokee.com/photo/singlePhoto.b?ID=7152190
使用show出来的图片
http://shanmin2005.bokee.com/photo/singlePhoto.b?ID=7152191
当指示的控件在最下方时,show会出现错位的情况
http://shanmin2005.bokee.com/photo/singlePhoto.b?ID=7152192

------解决方案--------------------
好像没有现成的方法,如果允许作一些private reflection的话可以
反射取tooltip.Handle这个是Tooltip window的Handle,然后在Popup事件中用Win32API
SetWindowPosition来设置window的位置就可以了。
------解决方案--------------------


如果要想 提示出现在 上方 : 这个方法是 VS2005 中的

this.toolTip1.SetToolTip(this.button1, "测试文本 ");
------解决方案--------------------
如果你使用Show方法且,那么可以在这个方法的其它重载中找到显示位置参数并指定就可以在指定位置显示这个Tip,

如果要使用默认的显示,最好不使用Show方法而使用SetToolTip.

如果不是有意的立刻显示这个Tip,那么最好这两个方法都不调用,而是设置控件的在ToolTip上的显示字符串内容.这样系统会在合适的时候自动的显示ToolTip内容.
------解决方案--------------------
试了半天 发现第一次的方向和后边总是反着的 即使能控件位置也不正确
------解决方案--------------------
this.toolTip1.SetToolTip(this.button1, "测试文本 ");
气泡中的图标
this.toolTip1.ToolTipIcon = ToolTipIcon.Warning;
是否以气泡方式显示
this.toolTip1.IsBalloon = true;
------解决方案--------------------
帮楼住顶了,这个问题问的不错