C# 用ToolStripDropDown实现任意Windows控件弹出显示
- 摘要:C#利用ToolStripDropDown类轻松实现像QQ的表情控件和QQ用户信息类似的弹出窗口效果,而且对任意Windows控件和自定义控件都有效。
QQ的用户信息的显示和QQ表情的显示,不但可以像ToolTip那样不抢占主窗口的激活状态(Active),而且在主窗口失去焦点或者有其他操作的时候就自动关闭了,还可以在上面放任意的控件,而且可以接受用户操作。.NET自带的ToolTip就只能显示信息,是不能操作的,而且也不能把任意Windows控件加载上去。很多人用一个窗口(Form)来实现这样的提示或者信息窗口,但是要处理很多东西,而且不一定能完全实现这样的效果。其实ToolStripDropDown可以非常方便的实现这个效果,如果你细心观察的话,你就会发现ContextMenuStrip就是继承自ToolStripDropDown实现的。前面写的文章中,其实有2篇(类似QQ表情的控件 EmotionContainer 和 显示透明的弹出窗体)已经用到过ToolStripDropDown,只是没有详细的介绍。这篇文章就来介绍它,并且继承ToolStripDropDown实现了一个PopupControlHost类,可以非常方便的使用它实现弹出信息显示,还实现了一些其他效果,而且还可以显示不规则外观的控件。
PopupControlHost实现了几个功能:改变边框颜色、改变大小、改变显示区域、按下ALT键是否关闭。还提供了几个函数,方便控制显示的位置。具体实现代码就不贴了,看下类的视图:
介绍一下几个属性的作用:
1、 AcceptAlt:设置按下ALT键是否关闭。
2、 BorderColor:设置边框的颜色。
3、 CanResize:设置是否可以改变大小。
4、 ChangeRegion:是否根据加载的控件的显示区域改变ToolStripDropDown的显示区域。
5、 OpenFocused:设置打开后是否把焦点设置到加载的控件上。
在示例中,实现了一个不规则的控件RegionControl,它有点类似ToolTip的样式,这个主要是通过改变控件的Region实现的。最后看看效果:

声明:
本文版权归作者和CS 程序员之窗所有,欢迎转载,转载必须保留以下版权信息,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
作者:Starts_2000
出处:CS 程序员之窗 http://www.csharpwin.com。
你可以免费使用或修改提供的源代码,但请保留源代码中的版权信息,详情请查看: