演练:为设备创作用户控件

更新:2007 年 11 月

在本演练中,您将创建一个控件库以及一个要放入该库中的用户控件。用户控件是单个可重用单元中的 Windows 窗体控件的组合,自定义控件是需要无法通过标准控件实现的 UI 或功能的控件,您应当将两者区分开来。

本演练中的用户控件是一个用于设备的简单时钟显示工具,并且模仿了类似的桌面演练(例如演练:使用 Visual Basic 创作复合控件演练:使用 Visual C# 创作复合控件)。

本演练由四项主要任务组成:

  • 创建一个控件库和一个控件。

  • 重命名该库和控件。

  • 向该控件添加组件。

  • 在设备仿真程序上测试控件。

您可以在本演练中使用 Visual Basic 或 Visual C#。虽然两种语言使用相同的文件名,但具有语言特定的扩展名,为此,本演练使用一条竖线来提示您根据使用的语言选择相应的扩展名,如“文件名.vb|cs”所示。

说明:

对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您使用的 Visual Studio 版本及设置。有关更多信息,请参见Visual Studio 设置

本演练是使用“Visual Basic 开发设置”和“Visual C# 开发设置”编写的。

先决条件

无。

选择目标设备

为了确保在部署解决方案时系统提示您选择设备,请完成以下过程。

在部署时提示选择设备

  1. 在“工具”菜单上单击“选项”,展开“设备工具”,再单击“常规”。

    (如果“设备工具”不可见,请选中“选项”对话框底部的“显示所有设置”。)

  2. 选中“部署设备项目前显示设备选项”复选框。

创建项目

指定给新项目的名称同时还设置根命名空间和程序集名称。

创建控件库和控件

  1. (Visual Basic) 在“文件”菜单上单击“新建项目”。

    - 或 -

    (Visual C#) 在“文件”菜单上指向“新建”,然后单击“项目”。

  2. 在“新建项目”对话框的“项目类型”窗格中,展开“Visual Basic”或“Visual C#”,然后单击“智能设备”。

    如果开始并未出现您需要的语言,请展开“其他语言”。此显示由开发设置控制。

  3. 在“模板”窗格中单击“智能设备项目”。

  4. 在“名称”框中,键入“ctlDevClockLib”,然后单击“确定”。

  5. (仅限 Visual C#)在“位置”框中,验证要用于存储项目文件的位置,然后单击“确定”。

  6. 在“目标平台”下拉列表中,选择“Pocket PC 2003”。

  7. 从“.NET Compact Framework 版本”下拉列表中选择“.NET Compact Framework 2.0 版”[.NET Compact Framework Version 2.0]。

  8. 单击“模板”窗格中的“控件库”,再单击“确定”。

    此时会显示“组件设计器”。

您已经指定了项目名、根命名空间和程序集名称 (ctlDevClockLib)。但是,项目中的组件具有由 Visual Studio 分配的默认名称(例如,“UserControl1”)。通常,你需要将这些名称更改为更有意义的术语。

重命名该库和控件

  1. 在“解决方案资源管理器”中,右击“UserControl1.vb|cs”,再单击“属性”。

  2. 将“文件名”更改为“ctlDevClock.vb|cs”。

  3. (仅限 Visual C#)在询问是否要重命名对此代码元素的所有引用的消息框中,单击“是”。

    “属性”窗口中的名称更改现在传播到了其他引用,如类名和构造函数。

接下来,从“工具箱”中添加组件,以便为您的用户控件提供功能和用户交互。在本演练中,您添加一个访问系统时间的“计时器”控件和一个显示时间的“标签”控件。

添加组件并更改它们的属性

  1. 在“工具箱”中,双击“标签”。

    将向“组件设计器”中的用户控件添加一个标签控件。

  2. 在该标签控件的“属性”窗口中,执行下列操作:

属性

更改为

Name

lblDisplay

Text

(空白)

TextAlign

TopCenter

Font.Size

14

  1. 在“工具箱”中,双击“计时器”。

    组件栏中会出现一个“计时器”控件。

  2. 在该计时器控件的“属性”窗口中,执行下列操作:

属性 (Property)

更改为

Interval

1000

Enabled

True

在下面的步骤中,添加一个事件处理程序,以便在“标签”控件中显示时钟计时周期。

添加事件处理程序

  1. 在组件栏中,双击“Timer1”(Visual Basic) 或“timer1”(C#),以打开代码编辑器并定位至该计时周期事件。

  2. (Visual Basic) 插入下面的事件处理代码:

    lblDisplay.Text = Format(Now, "hh:mm:ss")
    

    - 或 -

    (Visual C#)

    lblDisplay.Text = DateTime.Now.ToLongTimeString();
    
  3. (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(); 
    }
    
  4. 在“文件”菜单上单击“全部保存”。

  5. (仅适用于 Visual Basic)在“保存项目”对话框中,将项目以“ctlDevClockLib”的名称保存到您选择的位置。

测试控件

该简单设备应用程序用作您的控件的测试容器。

生成此控件并创建一个测试容器

  1. 在“生成”菜单上单击“生成”(或“生成 ctlDevClockLib”)。

  2. 在“文件”菜单上指向“添加”,然后单击“新建项目”。

  3. 在“添加新项目”对话框中,单击“项目类型”窗格中的“智能设备”,再单击“模板”窗格中的“智能设备项目”。

  4. 在“名称”框中键入“Test”,然后单击“确定”。

  5. 在“添加新智能设备项目”对话框中,从“目标平台”下拉列表中选择“Pocket PC 2003”,从“.NET Compact Framework”下拉列表中选择“.NET Compact Framework 2.0 版”[.NET Compact Framework Version 2.0],单击“模板”窗格中的“设备应用程序”,再单击“确定”。

  6. 在“解决方案资源管理器”中,右击“Test”项目,然后单击“设为启动项目”。

  7. 右击“Test”项目,再单击“添加引用”。

  8. 在“添加引用”对话框中,单击“项目”选项卡,然后双击“ctlDevClockLib”。

  9. 在“工具箱”中,找到“ctlDevClockLib 组件”选项卡,然后双击“ctlDevClock”组件。

    此控件即加载到设计器中。

  10. 在“调试”菜单上,单击“开始”(或“开始调试”)。

  11. 在“部署”对话框中,选择“Pocket PC 2003 SE 仿真程序”,然后单击“部署”。

请参见

概念

控件类型建议

其他资源

设计时开发 Windows 窗体控件