欢迎来到天天文库
浏览记录
ID:38140020
大小:46.00 KB
页数:3页
时间:2019-05-28
《numricUpDown控件美化》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、前面的文章中介绍了ListView、ListBox、Button等控件的扩展和美化,这篇文章我们将来介绍另一个美化起来比较麻烦的控件:UpDown控件NumericUpDown。NumericUpDown 控件主要功能是让用户通过单击Up-Down按钮或者使用键盘上的上下箭头来按设置好的增量改变数值。它也是一个复合控件,由一个TextBox和一个Up-Down按钮组成,对它的美化主要是对Up-Down按钮(UpDownButton)和边框(Border)的美化。边框的美化是比较简单的,本文主要介绍对UpDownButton的美化。首先,需要获取UpDownButton
2、的句柄,这次获取UpDownButton的句柄比较简单,不需要通过API函数了,NumericUpDown控件的Controls[0]就是UpDownButton控件,所以向下面这样就可以得到UpDownButton控件了: internal Control UpDownButton { get { return base.Controls[0];} } 接着将实现一个UpDownButtonNativeWindow类,把UpDownButton的句柄分配给它,就可以通过它截取UpDownButto
3、n的消息了。在这个类里面,截取WM_PAINT消息,重绘UpDownButton控件。为了绘制鼠标进入、按下、离开的不同效果,还要获取鼠标的信息,涉及一些API的运用,这里就不多介绍了,看看这个类里的几个主要的方法: #region PrivateMethods private bool LeftKeyPressed() { if (SystemInformation.MouseButtonsSwapped) {
4、 return (GetKeyState(VK_RBUTTON)<0); } else { return (GetKeyState(VK_LBUTTON)<0); } } private void DrawUpDownButton() { bool mouseOver= false;
5、 bool mousePress=LeftKeyPressed(); bool mouseInUpButton= false; Rectangle clipRect=_upDownButton.ClientRectangle; RECT windowRect= new RECT(); Point cursorPoint= new Point(); GetCursorPos(ref cursorPoint);
6、 GetWindowRect(_upDownButtonWnd, ref windowRect); mouseOver=PtInRect(ref windowRect,cursorPoint); cursorPoint.X-=windowRect.Left; cursorPoint.Y-=windowRect.Top; mouseInUpButton=cursorPoint.Y7、 using (Graphics g= Graphics.FromHwnd(_upDownButtonWnd)) { UpDownButtonPaintEventArgs e= new UpDownButtonPaintEventArgs( g, clipRect, mouse
7、 using (Graphics g= Graphics.FromHwnd(_upDownButtonWnd)) { UpDownButtonPaintEventArgs e= new UpDownButtonPaintEventArgs( g, clipRect, mouse
此文档下载收益归作者所有