Net(C#)自定义Win控件

上传人:pu****.1 文档编号:500650880 上传时间:2023-12-10 格式:DOCX 页数:26 大小:510.75KB
返回 下载 相关 举报
Net(C#)自定义Win控件_第1页
第1页 / 共26页
Net(C#)自定义Win控件_第2页
第2页 / 共26页
Net(C#)自定义Win控件_第3页
第3页 / 共26页
Net(C#)自定义Win控件_第4页
第4页 / 共26页
Net(C#)自定义Win控件_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《Net(C#)自定义Win控件》由会员分享,可在线阅读,更多相关《Net(C#)自定义Win控件(26页珍藏版)》请在金锄头文库上搜索。

1、Net(C#)自定义 WinForm 控件之 BalloonWindow写在前面:使用Tooltip的时候,大家都会觉得有不足够的地方,如,在使用图片时,很不方便,如,要增加ToolTip的自动时(搜索内容等)不方便。普通都会想,如果ToolTip是一个Form,那什么问题都好解决了。下面就介绍一个ToolTip,它的本质是一个Form。IconCap t i oilShow E:dlloonCIoe eOnli e t i eCIoeeOnMouseMoveCl os eOrJilous eCli ckessErLableTimeou tS:=unple TextText can have

2、multipie linesAruzhored hereSJlow WalloonI3Qp t i ons少目一 v厨厨Balloon Form DemoTypw a text below :ind click on Earch button to ee:irch CodeFroject for the testtSe:ar chCloseF orm介绍此款用户控件的源网址是:http:/ System.Windows.Forms.Message m)RecalcLayout()protected. override void. WndProc tref System. Windows. Fo

3、rms. Message m)swi tch (m. Msg)case WM_NCCAISIZE: WmNCCalcSi ze (ref m; break;case WM_NCFAINT:WmBCPaint. (ref m):break;M NCHITTESTWmNCHitTest (ref m); breat;defaultbase. WrLiUroc Gref m); br e :dk;众所周知,WndProc是消息处理的函数,源文件对三个消息进行了加工和处理,它们是WM_NCCALCSIZE, WM_NCPAINT, WM_NCHITTEST,三个消息的含义是这样的WM_NCCALCSI

4、ZE 消息在需要计算窗口客户区的大小和位置时发送。通过处理这个消息,应用程序可以在窗口大小或位置改变时控制客户区的内容。WM_NCPAINT用于重画窗口的非用户区,如标题,边框和滚动杆。WM_NCHITTEST讯息是一个很特殊的讯息。它是用来决定目前滑鼠所在位置属性的讯息,因此我们可以 利用此特性,当滑鼠移至指定的位置时,传回HTCAPTION,使得系统以为滑鼠目前位於标题棒,如此就 可以移动视窗了。正是利用了这三个方法,使得Form的形状变成ToopTip 一样,下面,就算有了一个形似ToolTip的Form,我们,还是差一点,就是ToopTip的定位,往往在屏幕边界时,ToopTip的位置

5、需要一定的调整,特别是那个小的三角形,随着顶点位置的不同,就要作不同的变形。下面是RecalcLayout的部分代码,看到了,下面的形式,就是计算边框和四角的大小和位置的。prot电匚ted voi d RecalcLayout 0i f (! thi e. IsH:=LTLiil eCr e at ed)rmt uitl;SystEm. Drawing. Si rm windowSi ze = thi e. Si ze;Fuint tailPoints = naw Fijint 3;Fciint topLeftFoint 二 Fijint. Empty;Fjint bcittomRi ght

6、Foint = (Fuint)windowSi ze;i t ch (thi s. Quaiir:=LTLt)c as e B :=lL1 unQuaiir :=ltlt. T opLef t:topLeftFoint. Y = TIFTAIL;tailPoints2.X = (windowSize. Width-TIPTAIL)/4 + TIFTAIL;tailPoints2. Y = TIFTAIL;tailPoints0.X = (windowSize. Width-TIPTAIL)/4 + 1;tailPointsEO. Y = tailPoints2. Y;tailPoints1.

7、X = tailPoints0. X;tailPointsl. Y = 1;tre:;case B:=lL1 urLUuaiir:tlt. TopRi 迂ht:topLeftPoint. Y = TIFTAIL;tailPointsEO. X = (windowSize. Width-TIPTAIL)/4*3;tailPointsEO. Y = TIFTAIL;tailPoints2.X = (windowSize. Width-TIPTAIL)/4*3 + TIPTAIL-1;tailPoints2. Y = tailPoints0. Y;t ailPointsl.X = t ailPoin

8、ts2.X;tailPointsl. Y = 1;tre:;c as e B :=lL1 unQuaiir :=ltlt. E; o 11 omLef t:bottomRi ghtFoint. Y = windowSize. Height-TIFTAIL;tailPointsEO. X = (wiruiowSize. Wid+h-TIFTAIL)/4 + TIFTAIL - 1;tailPointsEO. Y = windowSize. Height-TIPTAIL;tailFoints2.X = (windowSize. Width-TIFTAIL)/4;tailPoints2. Y = t

9、ailPoints0. Y;t ailPointsl.X = t ailPoints2.X;tailPoints1. Y = windowSize. Height_l;tre:;BalloonWindow 是一个比较好的控件,好多的方法都提供了重写功能,这样,使到控件的适应性大大加 强,而可使用面更宽。其它如果,可以设置一下,不出现三角形的指向,那么更好。Net(C#)自定义 WinForm 控件之 Message Balloon写在前面:.Net自带有标准的控件Tooltip,但是,在使用过程中,也有不合人意的时候,如自动关闭的问题,或怎样关闭提示,提示显示多长时间的问题。下面介绍一个比较好

10、用的 Tooltip 自定义控件 MessageBalloon,通过对些控件的一些简单的介绍,希望大家可以找到自已喜欢的Tooltip控件。介绍这一款控件的源网址是:http:/ 真是烦人的。设计剖析在.Net(C#)的平台下使用标准的API接口,创建Tooltip窗口布局定位ToolTip的位置,然后弹出Tooltip界面,界面中包括图标,文字标题,文字内容和关闭窗口的功能。 Tooltip界面的显示时间是没有限制的,点击时隐藏,而点击“Hide Tip”可以隐藏。动作与方法外部调用接口有构造函数:MessageBalloon()MessageBalloon(Control parent)显

11、示与隐藏:Show()Hide()重要的方法有顾名思义,下面的方法是创建Tooltip界面和设计界面的位置CreateTool()SetBalloonPosition()下面是CreateTool的方法体,也就是创建Tooltip的全过程,可以看到,大部分的功能都是由标准的API 来组成的。由此可见,做自定义界面控件调用标准API是少不了的。/ abeolut.Q is used tooltip m:=ljtlot be shown/ if coords exceed thm cornerE of the Ecreeni f Gn_ab eF d sn)ti.uFlags |二 TTF_ABS

12、OLUTE:i f Gn_cerLtmrS te:mti. uFlags |= TTF_CENTERTIP:t i. ul d = m_tool. H:=LTLidle ;ti.lpszText 二 m_text;ti. hwnd = m_pi:fent. Handle;GetCli en+Rect Ijti_par ETit. H:=ltliL已 ref ti. rect);Cl i etl tT oS cr e en Gn_p ar an t. Handl 包丿 ref t i. r m 匚 t);/ m:dke Eiji_e we make: it the top level windo

13、wSetWindowFos(m_tool. Handl已HWNILTLIFMOST, |6 6 Q 6SWFJTOACTIVATE |SWFJTLIMO |SWFJTOSIZE);/ add the tool tipIntFtr ptrStruet = Marshal. AllocHGlobal (Marshal. Si zeOf (ti ):Marmhal. StruetureToFtr (ti, ptrStruetrue):SerLidMessage (m_tool. Handl 已 TTM_ADDTOOLJ 0, ptrStruct);ti 二(T00LIHF0)M:=q-zihal.

14、FtrTuStruetui_e (ptrStruet,15Teuf (TOOLINFLI);SerniMesEage (m.tool. Handle, TTM.SETMAXTIFWIDTH,0new IntPtr Qn_maxWi dth);其中SendMessage,SetWindowPos等的语法,跟C+基本上是一致的。字体格式选择 ComboBox 控件写在前面:当我们在使用 Microsoft Word 这个软件时,经常会使用到字体选择功能,如宋体,黑体,隶书之类,是一个下拉框的功能,当前,这个,在Net的标准控件中,是一个叫ComboBox的控件,那么,下面介绍的,就当然是 FontComboBox 了,自定义字体选择 ComboBox。介绍此控件

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号