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

控制

使用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中文版下编译通过。

时间: 2024-10-31 01:36:54

使用C#开发用户控制(转)的相关文章

Solidworks二次开发—07—控制草图对象

对象|控制 Solidworks二次开发-07-控制草图对象 Get All Elements of Sketch Example (VB) Solidwork中对草图的控制,下面的例子很详细.特征下的草图在solidwork中其实是特征的子特征,我们可以对特征进行GetFirstSubFeature.及GetNextSubFeature得到. 如果有需要大家可以从中找到对直线.弧线.圆等对象的操作.代码是solidworks的示例文件,里面充斥了debug.print,只是向用户显示程序执行的

TigerText推出新iOS应用允许用户控制信息

新浪科技讯 北京时间6月15日晚间消息,加州移动应用开发商TigerText今日针对苹果iOS设备推出了一项新应用,旨在保留群消息的社交特征. 该项应用允许信息发送者对群消息和"一对一"的聊天记录进行完全控制,例如可以让信息发送者回忆起在任何时间内所发送的信息.通过该项应用,用户可轻松创建和管理群消息,回忆消息,控制消息的保留时间等. 此外,新应用还允许用户控制发送消息的对象,利用TigerText的特定用户名来强化隐私保护,设置消息发送确认等.TigerText开发该项应用的核心理念

产品开发用户访谈的7条注意事项

  产品开发用户访谈的7条注意事项 在决定是否开发一款互联网产品,如以Drupal搭建的SaaS服务,往往需要先评估是否市场上真的有需求,这时最好的评估方式就是和目标用户进行面谈,然而进行面谈不是单纯的聊天,它是具有目的性的,访谈者必须借由问答的方式挖掘出用户的观点,已验证产品的需求,以下是进行用户访谈时需要注意的事情: 1.问开放性的问题 访谈时最好避免问是或不是 的问题,这样很容易在提供答案的情况下让用户去二选一,而且用户的答案完全没有足够的信息,因此最好是问开发性的问题,给用户足够的空间去

如何关闭windows的UAC用户控制?

  如何关闭windows的UAC用户控制?          点击开始菜单---选择控制面板 切换到大图标模式 点击系统 选择操作中心 点击边上的更改用户账户控制 来到UAC界面 吧通知拉到底吧 点击确定之后会提醒你 完成之后记得要重启你的电脑之后才生效的哦

sw二次开发-Solidworks二次开发,控制电机旋转

问题描述 Solidworks二次开发,控制电机旋转 在solidworks中的simulation中可以完成电机对滚球丝杠的控制, 现在我想知道能不能通过solidworks的二次开发,通过VB编写程序完成精确控制电机的转速,角位移等. 可通过以下两步来实现,但现在在第二步卡住了: 1.VB发送数据给Solidworks 2.通过SOlidworks上的API来控制电机起停,转过多少度,以及转速... 尤其是第二个步求相关资料,不胜感激. 谢谢大家了,学生一枚,以上功能是论文中的一部分,我尝试

海康硬盘录像机dll-c#开发用户控件引用海康硬盘录像机的dll时报800700B错误

问题描述 c#开发用户控件引用海康硬盘录像机的dll时报800700B错误 项目目标平台设置为anycpu的情况下开的应用程序调用海康硬盘录像机dll时程序正常运行,可是winform开发用户控件时调用海康硬盘录像机的dll时报8007000b错误:大神们怎么解决这个问题. 解决方案 应该是接口使用错误,包括封送的数据类型,最好看看他们提供的demo

link中想用codefirst制作网盘,如何为每个用户控制一个文件夹的权限

问题描述 link中想用codefirst制作网盘,如何为每个用户控制一个文件夹的权限 link中想用codefirst制作网盘,如何为每个用户控制一个文件夹的权限,用户分享的时候别的用户也要有权限? 解决方案 不需要在文件系统控制权限,直接在你的bll中控制就可以了.定义一个虚拟目录和你的用户名的关系表,以及权限,无非就是读写创建删除改写

J2EE和XML开发——用户接口(二)

J2EE应用用户接口开发(二)  作者 KURT A. GABRICK         DAVID B. WEISS 出处 J2EE and XML Development第五章地址 <http://www.manning.com/gabrick>本文是J2EE和XML开发用户接口的第二部分,如果对文中的例子不熟悉请参见本文的第一部分--J2EE和XML开发用户接口(一) <http://www.111cn.net/develop/article/19/19844.shtm>. 四

Circle:发现周边好友 允许用户控制分享对象

北京时间5月14日消息,据国外媒体报道,应用商店中最近新出现了一款叫做Circle的应用,又一款进军最近热门的情境感知地理位置服务行业的应用,其竞争对手包括Highlight.Banjo.Meetup和最近被Facebook收购的Glancee.该初创公司之前曾经打造过校园匿名交友网站Likealittle,最近开始把重心都转向这款新推出的应用Circle上. 先前在SXSW正式发布的Highlight是一款被动型LBS交友应用,帮助用户发现和结交周边有共同兴趣爱好和共同朋友的朋友.Circle