C#创建用户控件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
演练:使用Visual C# 创作用户控件
Visual Studio .NET 2003
用户控件提供了一种创建和重用自定义图形界面的方法。用户控件本质上是具有可视化表示形式的组件。因此,它可能包含一个或多个Windows 窗体控件、组件或代码块,它们能够通过验证用户输入、修改显示属性或执行作者所需的其他任务来扩展功能。可以按照与其他控件相同的方式,将用户控件置于Windows 窗体中。在本演练的第一部分,创建一个名为ctlClock 的简单用户控件。在本演练的第二部分通过继承扩展ctlClock 的功能。
创建项目
创建新的项目时应指定其名称,以设置根命名空间、程序集名称和项目名称,并确保默认组件将位于正确的命名空间中。
创建ctlClockLib 控件库和ctlClock 控件
1.在“文件”菜单上,指向“新建”,然后选择“项目”以打开“新建项目”对话框。
2.从“C# 项目”列表中选择“Windows 控件库”项目模板,然后在“名称”框中键入ctlClockLib。
注意“Windows 控件库”模板在Visual C# .NET 的标准版中不可用。有关更多信息,请参
见Visual C# 标准版的功能。
默认情况下,项目名称ctlClockLib也被分配到根命名空间中。根命名空间用于限定程序集中的组件名。例如,如果两个程序集都提供名为ctlClock 的组件,则可以使用
ctlClockLib.ctlClock指定ctlClock 组件。在解决方案资源管理器中,右击
“UserControl1”并从快捷菜单中选择“查看代码”。
3.找到Class语句public class UserControl1,将UserControl1更改为ctlClock
以更改组件的名称。
注意默认情况下,用户控件从系统提供的UserControl类继承。UserControl类提供所
有用户控件要求的功能,并实现标准方法和属性。
4.找到构造函数public UserControl1(),将UserControl1 更改为ctlClock。
5.在解决方案资源管理器中,单击“UserControl1”,然后在“属性”窗口中,将FileName属性
更改为ctlClock.cs。
6.从“文件”菜单中,选择“全部保存”来保存项目。
将Windows 控件和组件添加到用户控件
可视化界面是用户控件的基本部分。这种可视化界面是通过将一个或多个Windows 控件添加到“用户控件设计器”中实现的。在下面的演示中,将向用户控件中加入Windows 控件,并编写代码以实现功能。
将标签和计时器添加到用户控件中
1.在解决方案资源管理器中,右击“ctlClock.cs”,然后选择“视图设计器”。
2.在工具箱中,单击“Windows 窗体”选项卡,然后双击label。
名为label1的标签控件被添加到用户控件设计器上的控件中。
3.在设计器中,单击label1。在“属性”窗口中,设置下列属性。
4.在“工具箱”中,单击“Windows 窗体”,然后双击“计时器”。
因为计时器是个组件,所以它在运行时没有可视化的表示形式。因此,它不与其他控件一起出现在“用户控件设计器”上,而是出现在组件栏中。
5.在组件栏中,单击timer1,并将Interval属性设置为1000,将Enabled属性设置为
true。
Interval属性控制计时器组件的刻度频率。timer1每走过一个刻度,它都会运行一次
Timer1_Tick事件中的代码。interval 表示前后两次刻度之间的毫秒数。
6.在组件栏中,双击timer1以转到ctlClock 的timer1_Tick事件。
7.将该代码修改为类似如下所示的代码示例。请确保将访问修饰符从private更改为
protected:
protected void timer1_Tick(object sender, System.EventArg
s e)
{
// Causes the label to display the current time
lblDisplay.Text = DateTime.Now.ToLongTimeString();
}
这些代码将使得当前时间显示在lblDisplay中。因为timer1的间隔设置为1000,所以该事件每隔1000 毫秒激发一次,从而每隔一秒就更新一次当前时间。
8.用virtual关键字修改该方法使其可重写。有关更多信息,请参见本主题的下一节“从用户控
件继承”。
protected virtual void timer1_Tick(object sender, System.
EventArgs e)
9.从“文件”菜单中,选择“全部保存”来保存项目。
将属性添加到用户控件中
现在,clock 控件封装了Label控件和Timer组件,每个都有其自己的继承属性组。尽管您的控件的后续用户无法访问这些控件的个别属性,但可以通过编写适当的代码块来创建和公开自定义属性。在下面的章节中,您将向控件中添加属性,这些属性使用户能够更改背景和文本的颜色。
将属性添加到用户控件中
1.在解决方案资源管理器中,右击“ctlClock.cs”,然后从快捷菜单中单击“查看代码”。
控件的代码编辑器打开。
2.找到public class ctlClock 语句。在开始的{ 后面,键入:
private Color colFColor;
private Color colBColor;
这些语句会创建私有变量,用来存储要创建的属性的值。
3.在步骤2 中的变量声明下方键入以下代码:
// Declares the name and type of the property.
public Color ClockBackColor
// Retrieves the value of the private variable colBColor.