制作自己的分隔线控件(LineH、LineV)

控件

以前用Delphi开发软件的时候,如果需要在界面上放置一个分隔线,其自带的TBevel可以很好地满足这一要求。现在转到了.NET平台,竟找不到对应的控件(毕竟每次在Paint事件中画太麻烦)。而如果用Panel、GroupBox、Label来间接实现,效果不够理想,并且感觉怪怪的。因此决定自己实现一个分隔线控件,效果如下图所示:

  在这里我只将核心代码贴出来,关于创建自定义控件的相关知识可参考MSDN:

ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vbcon/html/vbconControlCreation.htm

/// <summary>

/// 水平分隔线

/// </summary>

[

ToolboxBitmap(typeof(LineH), "res.LineH.ico"),

Designer(typeof(LineHDesigner))

]

public class LineH : System.Windows.Forms.UserControl

{
//... ...

private void LineH_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

{

Graphics g = e.Graphics;

Rectangle r = this.ClientRectangle;

Pen darkPen = new Pen(SystemColors.ControlDark, 1);

Pen LightPen = new Pen(Color.White);

//用暗色调处理上边缘

g.DrawLine(darkPen, r.Left, r.Top, r.Right, r.Top);

//用亮色调处理下边缘

g.DrawLine(LightPen, r.Left, r.Top + 1, r.Right, r.Top + 1);

}

//... ...

}

/// <summary>

/// 垂直分隔线

/// </summary>

[

ToolboxBitmap(typeof(LineV), "res.LineV.ico"),

Designer(typeof(LineVDesigner))

]

public class LineV : System.Windows.Forms.UserControl

{
//... ...

private void LineV_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

{

Graphics g = e.Graphics;

Rectangle r = this.ClientRectangle;

Pen darkPen = new Pen(SystemColors.ControlDark, 1);

Pen lightPen = new Pen(Color.White);

//用暗色调处理左边缘

g.DrawLine(darkPen, r.Left, r.Top, r.Left, r.Bottom);

//用亮色调处理右边缘
g.DrawLine(lightPen, r.Left + 1, r.Top, r.Left + 1, r.Bottom);

}

//... ...

}

欲完全实现上图所示效果,可参阅http://blog.csdn.net/doubon/archive/2005/01/18/258314.aspx。

时间: 2024-12-28 23:41:06

制作自己的分隔线控件(LineH、LineV)的相关文章

Asp.net 2.0 制作最原始的TextBox控件[一](示例代码下载)

asp.net|控件|示例|下载 (一). 概述         示例制作一个与Asp.net TextBox同样功能的 TextBox control, 可以了解一下        Control底层的实现原理(二). 代码实现      1. 核心控件生成代码文件TextBox.cs  1  1using System; 2  2using System.Data; 3  3using System.Configuration; 4  4using System.Web; 5  5using

Android使用WindowManager制作一个可拖动的控件_Android

效果图如下 第一步:新建DragView继承RelativeLayout package com.rong.activity; import com.rong.test.R; import android.content.Context; import android.graphics.Color; import android.graphics.PixelFormat; import android.util.AttributeSet; import android.view.Gravity;

vb.net2008下画线控件

问题描述 .net下无法画静态线.如何处理. 解决方案 解决方案二:该回复于2011-01-17 13:15:23被版主删除解决方案三: 解决方案四:该回复于2011-01-19 09:02:09被版主删除解决方案五:不就是画一条线吗?creategrphics获取一个graphics.在grasphics里调用drawline就行了.解决方案六:可以用Drawcurve方法去画解决方案七:在窗体上画线PrivateSubButton1_Click(ByValsenderAsSystem.Obj

Android使用WindowManager制作一个可拖动的控件

效果图如下 第一步:新建DragView继承RelativeLayout package com.rong.activity; import com.rong.test.R; import android.content.Context; import android.graphics.Color; import android.graphics.PixelFormat; import android.util.AttributeSet; import android.view.Gravity;

教你如何用Dreamweaver制作特色分隔线

dreamweaver 网页教学网注:如果你的Dreamweaver MX 2004还没有升级,就去官方升级吧!升级完之后就可以使用时间轴了!点击这里下载吧(建议使用快车或其它下载工具下载) 网页分隔线可以说是网页中不可缺少的元素,它主要用于分隔网页内容,也可以用于装饰网页. 效果说明:在网页中间会出现一条漂亮的分隔线,并且能够不断闪动,从而充分体现出网站的个性,如图 1 所示. 创作思想:本实例使用层作为定位,然后在层中插入表格,在表格中插入图片并在时间轴中分别添加样式滤镜效果. 操作步骤 (

怎样使用Word 2007控件制作合同书的应用实例

更改的,甚至不允许更改.另外一些内容,比如涉及到公司的名称.地址.帐号等不允许出错,还包括一些可选的项目等.这种类似网页表单的文本用Word怎样实现呢?请您跟我来,按照下面的步骤一步步熟悉,马上就可以做出一份满足上述要求的合同书,它定会给您以后的工作带来极大方便. 图:效果 1.建立文档 在编写采购合同时候,按照正常的步骤输入文档,需要注意的是留出需要单独填写的部分.在下面的步骤中,我们将最常用的文本输入格式--文本,日期,下拉列表,复选框等内容来介绍给大家. 还有一点要注意,那就是要为Word

VC中实现带有背景位图的树型控件

当前许多应用程序都在使用树型控件时为其添加了背景位图,增强的控件的魅力,然而对于Visual C++编程爱好者来说,使用Visual C++MFC提供的树型控件(CTreeCtrl)本身就是一个难点,至于如何使该控件能够带有背景位图,那就更加是一个令人困惑的问题了.本实例对CTreeCtrl类进行了增强,不仅使它带有背景位图,而且解决了在点击树型控件时背景位图闪动的问题,另外,通过在对话框中使用该控件来显示三级目录,演示了树型控件的基本使用方法.下图为程序编译后的运行效果图: 图一.带背景图的树

090_《Delphi6控件实用程序设计100例》

<Delphi6控件实用程序设计100例> Delphi 教程 系列书籍 (090) <Delphi6控件实用程序设计100例> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Part1 Part2 Part3 作者: 段兴 丛书名: 数据库与控件程序设计实例丛书 出版社:人民邮电出版社 ISBN:7115106290 上架时间:2002-11-4 出版日期:2002 年10月 开本:16开 页码:330 版次:1-1 内容简介 本书选取了利用Delph

ASP.NET 2.0高级控件之FileUpload控件

asp.net|高级|控件 应用程序中经常需要允许用户把文件上传到web服务器.尽管在ASP.NET 1.X也可以完成该功能,但在ASP.NET 2.0中使用FileUpload控件会更简单. 该控件让用户更容易地浏览和选择用于上传的文件,它包含一个浏览按钮和用于输入文件名的文本框.只要用户在文本框中输入了完全限定的文件名,无论是直接输入或通过浏览按钮选择,都可以调用FileUpload的SaveAs方法保存到磁盘上. 除了从WebControl类继承的标准成员,FileUpload控件还公开了