文章开始之前,先看下一个简短的录频效果。
实现原理:
他是鼠标悬停在控件上方后,弹出另一个窗体,该窗体可以展示不同的自定义组件,达到显示不同的各种需求的目的。
一、先制作容器窗体
using System; using System.Drawing; using System.Windows.Forms; namespace TipsWindow { public class ExplainForm : FormBase { public ExplainForm(Control content); public Point Offset { get; set; } public Control Content { get; } public void SetAutoCloseTimer(int interval = 5000); public void SetFormBorderStyle(FormBorderStyle style); public void SetIcon(bool isShowIcon); public void SetTitle(string title); protected override void Dispose(bool disposing); protected override void OnPaint(PaintEventArgs e); protected override void OnShown(EventArgs e); } }Offset:属性偏移,指偏离鼠标位置。一般如果挨着鼠标来弹出提示信息的话,不好看,所以,会有一个偏移。
Content:既然是容器,那么就要允许别人放东西以供展示,所以Content提供了这样的角色,他的内容展示到容器窗体中。请注意看,Content是Control控件,意味着,你可以自行定义你任何想要的自定义组件,所以,开放自由,是毫无疑问的。所以,你想要什么样子的提示,都可以,如下面2张图所示:
SetAutoCloseTimer:设定定时器,该定时器的作用为自动关闭这个提示信息窗体。在一些特定需求下,此方法可能对您很有用。
SetFormBorderStyle:设置弹出信息的窗体边框样式。
SetIcon:设置弹出窗体的图标样式,即左上角的图。
SetTitle:设置弹出窗体的标题。
二、有了容器窗体后,制作自己的用户组件
用户组件,即UserControl。如下图,我做了一个简单的示例组件:
三、将容器窗体加载到主窗体中
主窗体就是你希望使用弹出信息功能的窗体。即下图界面:
源码下载:https://download.csdn.net/download/mazhiyuan1981/12996475