演练:为设备创作用户控件
更新:2007 年 11 月
在本演练中,您将创建一个控件库以及一个要放入该库中的用户控件。用户控件是单个可重用单元中的 Windows 窗体控件的组合,自定义控件是需要无法通过标准控件实现的 UI 或功能的控件,您应当将两者区分开来。
本演练中的用户控件是一个用于设备的简单时钟显示工具,并且模仿了类似的桌面演练(例如演练:使用 Visual Basic 创作复合控件和演练:使用 Visual C# 创作复合控件)。
本演练由四项主要任务组成:
创建一个控件库和一个控件。
重命名该库和控件。
向该控件添加组件。
在设备仿真程序上测试控件。
您可以在本演练中使用 Visual Basic 或 Visual C#。虽然两种语言使用相同的文件名,但具有语言特定的扩展名,为此,本演练使用一条竖线来提示您根据使用的语言选择相应的扩展名,如“文件名.vb|cs”所示。
说明: |
---|
对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您使用的 Visual Studio 版本及设置。有关更多信息,请参见Visual Studio 设置。 |
本演练是使用“Visual Basic 开发设置”和“Visual C# 开发设置”编写的。
先决条件
无。
选择目标设备
为了确保在部署解决方案时系统提示您选择设备,请完成以下过程。
在部署时提示选择设备
在“工具”菜单上单击“选项”,展开“设备工具”,再单击“常规”。
(如果“设备工具”不可见,请选中“选项”对话框底部的“显示所有设置”。)
选中“部署设备项目前显示设备选项”复选框。
创建项目
指定给新项目的名称同时还设置根命名空间和程序集名称。
创建控件库和控件
(Visual Basic) 在“文件”菜单上单击“新建项目”。
- 或 -
(Visual C#) 在“文件”菜单上指向“新建”,然后单击“项目”。
在“新建项目”对话框的“项目类型”窗格中,展开“Visual Basic”或“Visual C#”,然后单击“智能设备”。
如果开始并未出现您需要的语言,请展开“其他语言”。此显示由开发设置控制。
在“模板”窗格中单击“智能设备项目”。
在“名称”框中,键入“ctlDevClockLib”,然后单击“确定”。
(仅限 Visual C#)在“位置”框中,验证要用于存储项目文件的位置,然后单击“确定”。
在“目标平台”下拉列表中,选择“Pocket PC 2003”。
从“.NET Compact Framework 版本”下拉列表中选择“.NET Compact Framework 2.0 版”[.NET Compact Framework Version 2.0]。
单击“模板”窗格中的“控件库”,再单击“确定”。
此时会显示“组件设计器”。
您已经指定了项目名、根命名空间和程序集名称 (ctlDevClockLib)。但是,项目中的组件具有由 Visual Studio 分配的默认名称(例如,“UserControl1”)。通常,你需要将这些名称更改为更有意义的术语。
重命名该库和控件
在“解决方案资源管理器”中,右击“UserControl1.vb|cs”,再单击“属性”。
将“文件名”更改为“ctlDevClock.vb|cs”。
(仅限 Visual C#)在询问是否要重命名对此代码元素的所有引用的消息框中,单击“是”。
“属性”窗口中的名称更改现在传播到了其他引用,如类名和构造函数。
接下来,从“工具箱”中添加组件,以便为您的用户控件提供功能和用户交互。在本演练中,您添加一个访问系统时间的“计时器”控件和一个显示时间的“标签”控件。
添加组件并更改它们的属性
在“工具箱”中,双击“标签”。
将向“组件设计器”中的用户控件添加一个标签控件。
在该标签控件的“属性”窗口中,执行下列操作:
属性 |
更改为 |
---|---|
Name |
lblDisplay |
Text |
(空白) |
TextAlign |
TopCenter |
Font.Size |
14 |
在“工具箱”中,双击“计时器”。
组件栏中会出现一个“计时器”控件。
在该计时器控件的“属性”窗口中,执行下列操作:
属性 (Property) |
更改为 |
---|---|
Interval |
1000 |
Enabled |
True |
在下面的步骤中,添加一个事件处理程序,以便在“标签”控件中显示时钟计时周期。
添加事件处理程序
在组件栏中,双击“Timer1”(Visual Basic) 或“timer1”(C#),以打开代码编辑器并定位至该计时周期事件。
(Visual Basic) 插入下面的事件处理代码:
lblDisplay.Text = Format(Now, "hh:mm:ss")
- 或 -
(Visual C#)
lblDisplay.Text = DateTime.Now.ToLongTimeString();
(Visual Basic) 将访问修饰符从 Private 更改为 Protected 并添加 Overridable 关键字,使处理程序代码如下所示:
Protected Overridable Sub Timer1_Tick(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Timer1.Tick ' Causes the label to display the current time lblDisplay.Text = Format(Now, "hh:mm:ss") End Sub
- 或 -
(Visual C#) 将访问修饰符从 private 更改为 protected 并添加 virtual 关键字,使处理程序代码如下所示:
protected virtual void timer1_Tick(object sender, System.EventArgs e) { // Causes the label to display the current time. lblDisplay.Text = DateTime.Now.ToLongTimeString(); }
在“文件”菜单上单击“全部保存”。
(仅适用于 Visual Basic)在“保存项目”对话框中,将项目以“ctlDevClockLib”的名称保存到您选择的位置。
测试控件
该简单设备应用程序用作您的控件的测试容器。
生成此控件并创建一个测试容器
在“生成”菜单上单击“生成”(或“生成 ctlDevClockLib”)。
在“文件”菜单上指向“添加”,然后单击“新建项目”。
在“添加新项目”对话框中,单击“项目类型”窗格中的“智能设备”,再单击“模板”窗格中的“智能设备项目”。
在“名称”框中键入“Test”,然后单击“确定”。
在“添加新智能设备项目”对话框中,从“目标平台”下拉列表中选择“Pocket PC 2003”,从“.NET Compact Framework”下拉列表中选择“.NET Compact Framework 2.0 版”[.NET Compact Framework Version 2.0],单击“模板”窗格中的“设备应用程序”,再单击“确定”。
在“解决方案资源管理器”中,右击“Test”项目,然后单击“设为启动项目”。
右击“Test”项目,再单击“添加引用”。
在“添加引用”对话框中,单击“项目”选项卡,然后双击“ctlDevClockLib”。
在“工具箱”中,找到“ctlDevClockLib 组件”选项卡,然后双击“ctlDevClock”组件。
此控件即加载到设计器中。
在“调试”菜单上,单击“开始”(或“开始调试”)。
在“部署”对话框中,选择“Pocket PC 2003 SE 仿真程序”,然后单击“部署”。