您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > C简单虚线形式下划线的实现
在使用过程中有这样的需求,需要textbox显示的文本的下划线是虚线的形式,本最初的想法是textbox的Font属性中效果本身就有直线形式的下划线,那么只要找到源码重写那个方法就可以了,但是本人对visualstudio2005不是很熟悉,感觉它没有10那么好用,据网上说获取元数据要有一些操作,所以继续找其他的方法,但是没有直接画虚线,不过有一个是画直线的。当然直线只是一条线段,而虚线是多条线段,那么问题解决起来就简单了。下面是实现的代码:publicclassClass1:TextBox//控件本身也是一个类,那么就可继承它{publicClass1(){this.BorderStyle=BorderStyle.None;}///summary///画线////summaryconstintWM_PAINT=0xF;protectedoverridevoidWndProc(refMessagem){base.WndProc(refm);if(m.Msg==WM_PAINT)using(Graphicsg=this.CreateGraphics())//panel1要画线的容器{inttextBoxLength=0;//记录虚线的长度intcount=0;//计数判断虚线的颜色using(PenpBlack=newPen(Color.Black))//pen可定义线条类型.{Pointp3=newPoint();//创建临时点存储原始点Pointp4=newPoint();using(PenpWhite2=newPen(Color.White)){Pointp1=newPoint();//起始点Pointp2=newPoint();//终止点p1.X=0;p1.Y=this.Height-1;p2.X=p1.X+2;p2.Y=this.Height-1;//给桥梁点赋值p3.X=p1.X;p3.Y=p1.Y;p4.X=p2.X;p4.Y=p2.Y;g.DrawLine(pBlack,p1,p2);textBoxLength+=2;count++;}while(textBoxLengththis.Width){p3.X+=2;p4.X+=2;if(count%2==0){g.DrawLine(pBlack,p3,p4);}textBoxLength+=2;count++;}}}}}在使用的时候,直接添加该类所在的命名空间的引用就行了,在工具箱中右键-选择项-浏览,选择相应的.dll或.exe文件。
本文标题:C简单虚线形式下划线的实现
链接地址:https://www.777doc.com/doc-2908669 .html