|
C#是微软推出的新一代编程语言,用于开发.net框架下的应用。C#从C/C 演变而来,但是比C/C 更加简单、安全。下面,我们通过用C#开发一个百分比控制来演示一下它的功能。 首先,预备好开发环境,启动Visual Studio.net Beta2,选择菜单文件->新建->项目,项目类型选择Visual C#项目,模板选择Windows控件库,名称输入Percent,按确定,建立一个项目。 切换到Percent.cs[设计]页面,在解决方案资源治理器中将UserControl1.cs改为Percent.cs。从工具箱中拖一个Label控制到设计面板上,设置该Label的属性:Name: lbPercent,BackColor: Transparent,Text: 100%,并拖拉Label的边框,使其大小能刚好显示出Text。右键在设计面板上单击,从弹出菜单中选择查看代码,打开代码编辑页面。 可以看到名字空间为Percent,将光标移动到public class Percent : System.Windows.Forms.UserControl以下,输入下面几行: private int iCurPercent = 0; private Color clPercent = Color.Blue; private Color clText = Color.Black; 以上定义并初始化了几个私有变量,iCurPercent表示当前的百分比进度,clPercent为进度的颜色,clText为中间显示的百分比文本的颜色。 本控制拥有三个属性,分别设置进度条和文字的显示颜色,以及当前进度。还定义了一个OnPercentChange事件,在百分比改变时触发该事件。 在protected override void Dispose( bool disposing )后面添加以下内容: public delegate void PercentChangeHandler(int CurrentPercent); public event PercentChangeHandler OnPercentChange;
public int CurrentPercent { get { return iCurPercent; } set { if ((value <= 100) && (value >= 0)) { iCurPercent = value; if (OnPercentChange != null) OnPercentChange(iCurPercent); this.Invalidate(); } } }
public Color PercentBackColor { get { return clPercent; } set { clPercent = value; this.Invalidate(); } }
public Color PercentTextColor { get { return clText; } set { clText = value; this.Invalidate(); } } 以上首先定义了事件,并在百分比改变时触发。然后是三个属性的实现。
下面,需要在Paint事件里改变Percent控制的显示状态。切换到设计页面,选择整个设计面板,在属性视图中将光标移动到Paint,按回车,代码页面里就自动为Paint事件建立了框架,其中其一个参数为System.Windows.Forms.PaintEventArgs e,可以用这个参数干很多事情。先输入以下画百分比控制边界的代码: Pen penBlack = new Pen(Color.Black, 1); Point ptStart = new Point(0, 0); Point ptEnd = new Point(this.Width - 1, 0); e.Graphics.DrawLine(penBlack, ptStart, ptEnd); ptStart = new Point(0, 0); ptEnd = new Point(0, this.Height); e.Graphics.DrawLine(penBlack, ptStart, ptEnd);
Pen penWhite = new Pen(Color.White, 1); ptStart = new Point(this.Width - 1, 0); ptEnd = new Point(this.Width - 1, this.Height); e.Graphics.DrawLine(penWhite, ptStart, ptEnd); ptStart = new Point(0, this.Height - 1); ptEnd = new Point(this.Width, this.Height - 1); e.Graphics.DrawLine(penWhite, ptStart, ptEnd);
SolidBrush brushFill = new SolidBrush(PercentBackColor); Rectangle rcFill = new Rectangle(2, 2, iCurPercent * (this.Width - 3) / 100, this.Height - 3);
|
| 共2页: 上一页 1 [2] 下一页 |
评论加载中…