首页 > 开发 > 综合 > 正文

使用C#开发用户控制(转)

2024-07-21 02:25:07
字体:
来源:转载
供稿:网友
使用c#开发用户控制

西南通信研究所 汪汉波  
01-9-7 下午 01:21:57
--------------------------------------------------------------------------------
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);
e.graphics.fillrectangle(brushfill, rcfill);

lbpercent.left = this.width / 2 - lbpercent.width / 2;
lbpercent.top = this.height / 2 - lbpercent.height / 2;
lbpercent.text = icurpercent.tostring() + "%";
lbpercent.forecolor = percenttextcolor;

在控制大小发生变化时也应该刷新,在设计页面,光标移动到resize,回车,在resize事件中写下:this.invalidate();
这样,这个百分比控制就编完了。下面,我们在编写一个测试程序来测试这个控制。选择菜单:文件->添加项目->新建项目,项目类型选择visual c#项目,模板选择windows应用程序,取名为testpercent,按确定,建立一个windows应用程序框架。由于是添加了一个新项目,因此,解决方案资源管理器中就有了两个项目:percent和testpercent。鼠标在testpercent上单击右键,从弹出菜单中选择“添加引用”,切换到“项目”页面,项目名称应为“percent”,双击该项目名称,把它加到选定的组件里面,按确定。这样,percent组件就加到测试工程里了。用过vc的#import指令或者vb的引用的人对这个操作也许会感觉比较亲切。
从工具箱中找到percent控制,将其拖到测试工程的设计面板上摆好,再从工具箱里拖一个button和一个timer放好。双击button,在其事件中写下:timer1.enabled = true; 再回到设计面板,双击timer,在其事件中写下:percent1.currentpercent = percent1.currentpercent + 1;将焦点移到用户控制percent1上,找到事件onpercentchange,回车,在程序框架中写下:this.text = currentpercent.tostring(); 这样,测试程序就完成了。
下面运行程序,将testpercent设为启动项目,运行,按下button1,可以看到进度增加的同时,窗口标题也在发生变化。
通过这个简单的用户控制的编写,我们可以体会到c#编程的简便性,对其开发环境有个基本的了解。该控制也可以很容易地被其他开发工具,比如visual basic.net使用。
以上程序在c366, 128mb, windows2000 advanced server sp2,visual studio.net beta2中文版下编译通过。

商业源码热门下载www.html.org.cn

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表