Net(C#)自定义WinForm控件之BalloonWindow

2025-04-29

.Net(C#)自定义WinForm控件之BalloonWindow

写在前面:使用Tooltip的时候,大家都会觉得有不足够的地方,如,在使用图片时,很不方便,如,要增加ToolTip的自动时(搜索内容等)不方便。普通都会想,如果ToolTip是一个Form,那什么问题都

好解决了。下面就介绍一个ToolTip,它的本质是一个Form。

介绍此款用户控件的源网址是:http://www.codeproject.com/KB/miscctrl/balloonnet.aspx

设计剖析

将Form变成ToopTip形状,可以设置显示的时间,关闭和打开的动作等

布局

要把一个Form变成一个Tooltip形状,那需要解决的问题有:源指向,也就是需要提示的控件或位置,上图所示,就是label4,要设计源指向的形状,至少设计为一个三角形,有一个顶点指向源控件。Form

的标题区域取消,Form的四边要变成椭圆形状,整个ToopTip的边框是可以设置边框颜色的。

动作与方法

从源文件中,可以发现两个重要的入口,

WndProc(ref System.Windows.Forms.Message m)

RecalcLayout()

众所周知,WndProc是消息处理的函数,源文件对三个消息进行了加工和处理,它们是WM_NCCALCSIZE,WM_NCPAINT,WM_NCHITTEST,三个消息的含义是这样的

WM_NCCALCSIZE消息在需要计算窗口客户区的大小和位置时发送。通过处理这个消息,应用程序可以

在窗口大小或位置改变时控制客户区的内容。

WM_NCPAINT用于重画窗口的非用户区,如标题,边框和滚动杆。

WM_NCHITTEST讯息是一个很特殊的讯息。它是用来决定目前滑鼠所在位置属性的讯息,因此我们可以利用此特性,当滑鼠移至指定的位置时,传回 HTCAPTION,使得系统以为滑鼠目前位於标题棒,如此就

可以移动视窗了。

正是利用了这三个方法,使得Form的形状变成ToopTip一样,下面,就算有了一个形似ToolTip的Form,我们,还是差一点,就是ToopTip的定位,往往在屏幕边界时,ToopTip的位置需要一定的调整,特别

是那个小的三角形,随着顶点位置的不同,就要作不同的变形。

下面是RecalcLayout的部分代码,看到了,下面的形式,就是计算边框和四角的大小和位置的。

强,而可使用面更宽。

其它

如果,可以设置一下,不出现三角形的指向,那么更好。

BalloonWindow是一个比较好的控件,好多的方法都提供了重写功能,这样,使到控件的适应性大大加

.Net(C#)自定义WinForm控件之Message Balloon

写在前面:.Net自带有标准的控件Tooltip,但是,在使用过程中,也有不合人意的时候,如自动关闭的问题,或怎样关闭提示,提示显示多长时间的问题。下面介绍一个比较好用的Tooltip自定义控件Message

Balloon,通过对些控件的一些简单的介绍,希望大家可以找到自已喜欢的Tooltip控件。

介绍这一款控件的源网址是:http://www.codeproject.com/KB/shell/balloontipsarticle.aspx 作者也是想构造一个比较好用的Tooltip,正如所说,Tooltip用得好,是有很大帮助的,不过,用得不好,

真是烦人的。 设计剖析

在.Net(C#)的平台下使用标准的API接口,创建Tooltip窗口

布局

定位ToolTip的位置,然后弹出Tooltip界面,界面中包括图标,文字标题,文字内容和关闭窗口的功能。

Tooltip界面的显示时间是没有限制的,点击时隐藏,而点击“Hide Tip”也可以隐藏。

动作与方法 外部调用接口有 构造函数: MessageBalloon()

MessageBalloon(Control parent)

显示与隐藏: Show() Hide() 重要的方法有

顾名思义,下面的方法是创建Tooltip界面和设计界面的位置

CreateTool() SetBalloonPosition()

下面是CreateTool的方法体,也就是创建Tooltip的全过程,可以看到,大部分的功能都是由标准的API

来组成的。由此可见,做自定义界面控件调用标准API是少不了的。

其中SendMessage,SetWindowPos等的语法,跟C++基本上是一致的。

字体格式选择ComboBox控件

写在前面:当我们在使用Microsoft Word这个软件时,经常会使用到字体选择功能,如宋体,黑体,隶书之类,是一个下拉框的功能,当前,这个,在.Net的标准控件中,是一个叫ComboBox的控件,那么,

下面介绍的,就当然是FontComboBox了,自定义字体选择ComboBox。

介绍此控件的源网址是:http://www.codeproject.com/KB/combobox/CGFontCombo.aspx 和普通的ComboBox最大的不同就是下拉的内容,是显示不同的字体的。用户选择不同的内容后,可以

让别的控件的字体显示选择的字体。

设计剖析

重写ComboBox的DrawItem方法,画我们需要的Item。

布局

使用了一个ComboBox以辅助显示和定位,而仅仅在DrawItem方法中,用我们所需要的样式来显示

动作

如下图所示,程序在构造函数中就订阅了三个事件,并针对这些事件做处理,

DrawItem,SelectedIndexChanged,FontChanged。

同时,重写了句柄创建方法,在CreateSampleFonts中对控件ComboBox的内容进行填充,填充所有

的字体库,


Net(C#)自定义WinForm控件之BalloonWindow.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:金蝶KIS记账王初始化

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219