精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
锐英源精品原创,禁止全文或局部转载,禁止任何形式的非法使用,侵权必究。点名“简易百科”和闲暇巴盗用锐英源原创内容。
提示小窗口最早出现在工具栏上,后来发展到窗体控件上都可以带提示小窗口,有了提示,可以给用户更多控件功能上的指示,更有利于用户使用,不过提示小窗口Tooltip不经常用,有时候遇到这个情况会难以解决问题,气泡风格比标准风格更形象一些,这里翻译一个codeproject上的文章,给大家一个实现方法。
有很多关于“气球”工具提示的文章,许多用类编写的代码都解决了这个问题。在这里,我展示了另一种我认为最简单且不会影响现有System.Windows.Forms.ToolTip实现的解决方案。
可能你知道,反射是 .NET Framework 的一大优势,我想这次也会用到它。System.Windows.Forms.ToolTip类持有本机工具提示窗口的句柄。这个句柄是非公开的,所以我们需要使用反射来获取这个成员。然后,我们可以将窗口的样式更改为“ balloon”。
需要SetBalloonStyle从创建工具提示窗口句柄的位置调用函数。在我的示例中,我OnLoad在Form. 如果使用无效的句柄调用函数,则会抛出异常。
protected override void OnLoad(EventArgs e) { base.OnLoad (e); // set toolTip native window style to "balloon". NativeMethods.SetBalloonStyle ( toolTip1 ); }
注:打开代码,也没有UserControl这种类或Tooltip的派生类,底层相关的代码如下:
public static void SetBalloonStyle ( ToolTip toolTip ) { NativeWindow window = GetNativeWindow ( toolTip ); NativeMethods.SetWindowLong ( window.Handle, GWL_STYLE , WS_POPUP | TTS_BALLOON | TTS_NOFADE ); }
用到了窗口属性,窗口句柄这类底层机制。