IT技术网www.itjs.cn

当前位置:首页 > 数据库 > SQl Server > 使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)

发布时间:2015-11-23 00:00 来源:未知

了解 Visual Studio 2005 中有关用于 .NET Compact Framework 2.0 应用程序的用户界面和数据库设计的新增功能。本文将介绍新的开发环境,特别是新的 Visual Studio 2005 Windows 窗体设计器;还将提供有关 Visual Studio 2005 中即装即用的新控件的简短指导教程,您将了解使用这些控件创建同时支持纵向模式和横向模式的应用程序有多么简单。Visual Studio 2005 可帮助您将多个设备定为目标。您还将了解如何使用窗体继承来重用和扩展现有窗体。因为大多数移动行业应用程序也需要存储和访问数据,所以您还将了解如何使用 Visual Studio 2005 中的新数据设计器来创建和填充 SQL Server 2005 Mobile Edition 数据库。此外,本文还将介绍如何创建本地数据库以及如何在简单应用程序中使用它。

本页内容

简介

上面的三个标签位于面板上,下面的两个标签位于窗体本身上。对于添加到窗体上的所有控件,请确保明确消除定位。默认情况下,Visual Studio 2005 将所有控件定位到上边缘和左边缘或它们的宿主容器中。处于纵向模式时,用户界面看起来很正常,但是假如将方向改为横向模式,就会出现问题,如图 4 所示。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)

图4:横向模式的Pocket PC,其用户界面包含既未停靠也未定位的控件

您马上会看到,并非纵向模式中显示的所有标签在横向模式中都能显示。部分面板(包括 label1)未显示在屏幕上。label5 也未显示在屏幕上,在横向模式下,显示屏的左右两侧未被填充。横向模式似乎只能显示纵向模式用户界面的部分内容。

要解决这个问题,无需编写实际代码,可以利用 .NET Compact Framework 2.0 应用程序的新增功能:停靠和定位。通过设置 Anchor 属性,可以轻松地将控件定位到屏幕的一个或多个边缘。定位控件意味着到定位边缘的相对位置始终保持不变,与显示方向无关。通过使用 Dock 属性,可以指定特定控件与其父控件边缘的对齐方式或填充屏幕区域的方式。将多个控件停靠到其父控件的同一边缘会导致这些控件彼此堆叠。查看图 5,您会发现其与图 3 略有不同。但是,此时控件已被定位和停靠。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)

图5:纵向模式的Pocket PC,其用户界面包含停靠和定位控件

在图 5 中,标签指明了它们的停靠方式。上面的三个标签都属于面板控件。最上面的标签未被停靠,但是定位到了面板控件的左边缘、上边缘和右边缘,面板控件又停靠到窗体的上边缘。左边缘、上边缘、右边缘与该标签之间的距离与显示方向无关,始终保持不变。用户界面以横向模式显示时,该标签的大小将被调整。面板控件中的其他两个标签显示在彼此的上边缘;二者都停靠到面板控件的下边缘。Tab 键顺序决定了这些标签的显示方式。假如现在将显示方向改为横向模式,窗体上的所有控件仍将显示,整个窗体都用来填充控件,如图 6 所示。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)

图6:横向模式的Pocket PC,其用户界面包含停靠和定位控件

图 6 中显示的用户界面比图 4 中显示的用户界面的效果要好得多,因为各个控件的大小已经调整,能够在横向模式中正确显示。要想真正了解停靠和定位对纵向模式和横向模式中控件位置的影响,应当花些时间来尝试一下。

在 Visual Studio 2005 中,在纵向和横向模式(甚至设计器视图)中查看用户界面十分简单。要更改设计器视图中设备的方向,只需从快捷菜单中选择整个窗体 [右键单击未放置任何控件的窗体的任意位置,再右键单击窗体的标题栏或设备外观,然后选择 Select <form class name>(选择 <form class name>)]。假如应用程序中只有一个窗体,并且使用 Visual Studio 2005 指定给该窗体的默认名称,则 <form class name> 将为 Form1。选择整个窗体后,通过右键单击设备外观显示的快捷菜单将包含不同项,包括 Rotate Left(向左旋转)和 Rotate Right(向右旋转)。您可以使用这些项更改显示方向,如图 7 所示。此外,选择整个窗体后,也可以使用工具栏按钮更改方向。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)
图7:更改设计器视图中的显示方向

拆分器控件

.NET Compact Framework 2.0 中有一个新控件并不容易理解,并且不能直观使用。运行时,可以使用新的拆分器控件和停靠控件来更改那些控件的大小,类似于完整 .NET Framework 中的拆分器控件。

设计过程中,可以添加拆分器控件,还可以设置它们的大小。您向窗体添加停靠控件和拆分器控件的顺序决定了拆分器运行于哪个停靠控件,还决定了拆分器控件对于用户的显示方式。根据 Visual Studio 联机帮助,使用拆分器控件可以调整停靠顺序中在它前面的那个停靠控件的大小。因为无法手动设置停靠顺序,所以必须在添加完要调整其大小的停靠控件后立即添加拆分器控件。还必须确保将拆分器控件停靠到要调整其大小的停靠控件的边缘,如图 8 所示。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)
图8:设计器视图中的拆分器控件

图 8 中的用户界面是按以下方式创建的。所有三个图片框逐个添加到窗体中,并停靠到窗体的上边缘和右边缘,图 8 中窗体左下部显示的最后一个图片框停靠为填充。创建图片框后,将两个拆分器拖到左下部的图片框中,并分别停靠到该图片框的上边缘和右边缘。

查看设计器视图中的用户界面,您可能认为窗体右侧的那个图片框的大小只能进行水平调整,左侧的那个图片框的大小可以进行水平和垂直调整。但是,如图 9 所示,移动水平拆分器时,所有控件都将根据拆分器的位置进行修改。出现这种情况的原因是因为右下部的那个图片框停靠到窗体的右边缘 — 始终尽可能占用和窗体右边缘的可用空间一样多的空间。此示例表明与拆分器不直接关联的控件仍可以影响它们的大小。虽然此示例对演示拆分栏和停靠控件之间的关系很有用,但并不建议通过这么复杂的方式创建用户界面。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)

图9:使用拆分器控件调整停靠控件的大小

为了向用户更直观地表明拆分器控件影响停靠控件的方式,应考虑停靠控件的顺序。在将其他控件添加到常用停靠区域之前,必须添加会影响停靠控件的拆分器控件,如图 10 所示。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)

图10:设计器视图中紧跟需要调整大小的停靠控件创建的拆分器控件

假如以不同顺序创建相同的用户界面,就会出现不同的结果。创建顶部图片框后立即创建水平拆分器控件。然后,创建右侧图片框,接着创建垂直拆分器控件,最后创建最后一个图片框。尽管运行时调整大小的方式未更改,但是图片框和拆分器的创建顺序却改变了,这让用户更好地了解拆分器如何调整不同控件的大小,如图 11 所示。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)

图11:使用按正确顺序创建的拆分器控件来调整停靠控件的大小

设置 Tab 键顺序

要确定哪个控件获得焦点(即,哪个控件可以接受键盘输入),将使用 Tab 键顺序。之所以称为 Tab 键顺序,是因为您可以通过使用键盘(甚至 Pocket PC 的软输入面板)上的 TAB 键把焦点从一个控件改到另一个控件。

在 Visual Studio .NET 2003 中,可以接受键盘输入的那些控件的 Tab 键顺序是固定的,只是程度不同。Tab 键顺序影响设计过程中控件的创建顺序,除非删除控件并以不同顺序重新添加控件,否则该顺序不会改变。在 Visual Studio 2005 中,创建用户界面的所有控件后可以更改 Tab 键顺序,这为用户提供了更大的灵活性,因为用户在设计用户界面时不必考虑 Tab 键顺序。例如,图 12 中显示的设计器视图中具有原始 Tab 键顺序的项目。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)
图12:原始Tab键顺序

该项目的用户界面非常简单,仅用于演示。窗体上的控件是按特定顺序创建的。首先创建按钮,然后创建 DateTime 控件,最后创建两个文本框。创建控件的顺序决定了初始的 Tab 键顺序。通过单击“Layout”(布局)工具栏上的 Tab Order(Tab 键顺序)按钮(图 12 中所圈的那个按钮),可以查看和修改 Tab 键顺序。

假如保持此特定应用程序的 Tab 键顺序不变,则运行应用程序时您将发现在控件中导航不是最佳体验。起初,输入焦点设置为用户界面上的按钮。按 TAB 键将输入焦点改为 DateTime 控件。再次按 TAB 键输入焦点将改为 tBox1,最后改为 tBox2。对用户而言,从上至下导航到所有控件更加自然。在 Visual Studio .NET 2003 中,若想让用户从上至下导航用户界面,则只能通过按您希望用户导航控件的这一顺序创建控件来实现。

在 Visual Studio 2005 中,选择“Layout”(布局)工具栏上的 Tab Order(Tab 键顺序)按钮后,只需单击能够接收输入焦点的每个控件就可以更改其 Tab 键顺序。这意味着您只需将控件添加到窗体中,而无需考虑 Tab 键顺序,因为您稍后可以修改 Tab 键顺序,如图 13 所示。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)
图13:设计器视图中修改过的 Tab 键顺序

假如现在运行应用程序,您会发现在控件间导航比较自然,因为输入焦点从用户界面顶部开始逐个控件更改并依次轮流下去。也可以使用 TabIndex 属性设置各个控件的 Tab 键顺序。也可以指定用户是否可以通过设置 TabStop 属性在窗体中进行切换来导航到控件。这些属性仅可以对那些能够接受键盘输入的控件执行。

更改设备外观设置

原始 Pocket PC 的屏幕分辨率为 240 x 320 像素。现在,许多 Pocket PC 都有着不同的屏幕分辨率,甚至有正方形屏幕。要确保应用程序在所有这些设备上都能正常显示,可以设置 FormFactor 属性。FormFactor 属性只是一个设计时值。也就是说,它本身不会影响应用程序。您可以使用 FormFactor 属性来为设备设置多个不同的屏幕尺寸,以便确保在设计过程中用户界面能够在外观设置不同的设备上正常显示。图 14 中显示了一个在 Pocket PC 上运行的简单文本编辑器。假如查看下载代码示例,使用 .NET Compact Framework 2.0 编写托管代码时,您会感激为您所提供的强大功能。此示例编辑器的整个功能大约采用了 30 行源代码,包括能够打开现有文件和保存文件。当然,此示例的功能非常有限,没有任何拼写或语法检查功能或者典型编辑功能(如查找和替换),但是此示例功能完善。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)

图14:具有简单文本编辑器用户界面的Pocket PC应用程序

假设您要在屏幕为正方形的 Pocket PC 上运行此应用程序。由于定位控件,很容易保持同样的用户界面,而无需编写任何代码。使用新的仅设计时属性 FormFactor 可以验证 Visual Studio 2005 设计器中应用程序的外观。图 15 中显示了一个新外观,应用程序的用户界面已根据新设备外观设置进行了调整。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)

图15:具有以正方形屏幕外观设置显示的简单文本编辑器用户界面的Pocket PC应用程序

在 Visual Studio 2005 中更改外观设置十分容易,甚至不需要重新编译应用程序。毕竟,设备仍是 Pocket PC 设备,因此您仍可以使用所有 Pocket PC 的特定控件。设计过程中,唯一发生变化的是窗体的布局。

但是假如要改为完全不同的设备该怎么办?设想您要在 Smartphone 设备上使用同一应用程序。

更改目标平台

Visual Studio .NET 2003 实际上不支持更改特定应用程序的目标平台。例如,假如创建了一个 Pocket PC 的应用程序,Visual Studio .NET 2003 不支持更改项目以将 Smartphone 作为目标。最好的方法是将所有业务逻辑与用户界面逻辑相分离,将业务逻辑重用于新目标平台,然后手动重新设计用户界面。

在 Visual Studio 2005 中,则可以更改目标平台。当然,从软件开发人员的角度来看,将业务逻辑与用户界面逻辑相分离仍是个不错的主意,但是使用 Visual Studio 2005 重新将其他平台作为目标可以提高修改应用程序用户界面以支持不同硬件的效率。实际上,更改目标平台后,只有用户界面将会更改。该项目生成的应用程序的所有其他方面保持不变。因为有几个控件在 Pocket PC 上有效但在 Smartphone 上无效,设计器将这些控件转换为在 Smartphone 上有效的最匹配的替代控件。

使用 Visual Studio 2005,可以更改特定项目的目标平台。设计器将尽量帮助您转换用户界面以满足新目标平台的要求。在 Visual Studio 2005 中,可以通过选择 Project(项目)菜单上的 Change Target Platform(更改目标平台)来更改为新目标平台。选择此命令后,对话框将显示当前目标平台和一个列表,从该列表中可以选项新目标平台,如图 16 所示。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)

图16:将目标平台从Pocket PC改为Smartphone

单击 OK(确定),Visual Studio 将更改目标平台。在更改过程中,它将关闭并重新打开项目。区别是现在窗体设计器以 Smartphone 外观设置显示应用程序。Visual Studio 未更改任何代码,所有原始控件在该窗体上仍然有效,但是您可能需要调整这些控件的大小以适应 Smartphone 的较小屏幕。

图 17 显示了许多 Smartphone 不支持的控件。您可以区分目标平台不支持的控件,因为它们显示在窗体上时会有一个警告指示器(中间有感叹号的三角形),并且其属性都灰显。Visual Studio 2005 可以帮助您将不受支持的控件转换为支持控件。选择窗体中不支持的控件并单击控件顶部显示的箭头后,将显示一个带有支持控件的弹出菜单,这些支持控件的功能与不受支持的控件的功能相当。假如是按钮(如图 17 所示),Visual Studio 帮助您将它们转换为文本框或菜单项。将按钮转换为菜单项后,该菜单项将与原始 button_Click 事件相连接,这意味着该菜单项将获得与 Pocket PC 上的按钮相同的功能。在图 17 中,还可以看到 Smartphone 不支持 SaveFileDialog 控件和 OpenFileDialog 控件。但是这些组件与按钮不同 — 无法将这些组件简单地转换为替代 Smartphone 控件,因此必须执行一些操作来更改这些控件。在此下载代码示例中,最可能执行的操作就是提供自己的对话框来打开并保存文件。在下载代码示例中,不会显示这些对话框,但愿您能够找到解决的方法。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)

图17:已转换为Smartphone应用程序的Pocket PC应用程序

将所有按钮转换为菜单项并删除 OpenFileDialog 组件和 SaveFileDialog 组件后,只需创建并运行项目。如图 18 所示,现在相同的应用程序在 Smartphone 上运行。更改目标平台的操作为不可逆操作。虽然 Visual Studio 不会更改应用程序代码,但是将更改用户界面的布局。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)

图18:现在在Smartphone上运行的简单文本编辑器

虽然您必须执行一些操作才能将应用程序改为不同的目标设备,但是在大多数情况下,工作量小于您为另一个目标设备创建整个用户界面所需的工作量。

可视窗体继承

在过去几年中,许多设备开发人员都请求了窗体继承的可视支持。在 Visual Studio .NET 2003 中,智能设备项目不支持可视窗体继承,尽管从另一个窗体继承一个窗体时您可以使用 C# 预处理器进行条件编译来提供相当有限的设计器支持(假如您很有创意)。相反,Visual Studio 2005 对可视窗体继承提供了完全设计器支持。这是一个优秀的新增功能,使您可以重用和扩展窗体,而无需不断地从头开始创建新窗体。

要显示可视窗体继承,请从您以后能够使用其派生其他窗体的简单基本窗体开始。虽然这不是必须的,但是对创建承载基本窗体的单独类库很有用。假如将基本窗体创建为项目的一部分,则该窗体不是在其他应用程序中重用的理想对象。此外,Visual Studio 中的窗体设计器必须能够读取基本窗体的元数据才能够显示从其派生的窗体,也就是说假如基本窗体与派生窗体包含在同一项目中,则必须进行额外的编译才能将基本窗体用于继承。在单独的库中创建基本窗体时,则无需执行此操作。

请务必提早考虑基本窗体,尤其应该了解哪些控件可以在继承的窗体中修改,哪些控件不可以修改。为了能够修改控件或控件的行为,必须确保将特定控件的访问修饰符设置为 private 之外的值。派生窗体中专用控件的属性无法更改。图 19 显示了以后可以在应用程序中使用的简单基本窗体。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)
图19:存储在单独类库中的基本窗体

基本窗体包含一个专用按钮,单击该按钮时它将对每个派生窗体执行同一操作。由于此按钮是 private 的,因此在派生窗体中无法访问该按钮及其成员。基本窗体还包含一个受保护的按钮,具有一个作为虚方法实现的事件处理程序。和其他虚方法一样,事件处理程序也可以在各个派生窗体中被替换。因为第二个按钮是受保护的,所以在派生窗体中可以访问该按钮及其成员。您甚至可以决定在派生窗体中创建单独的单击事件处理程序,生成正在执行的基本窗体和派生窗体的事件处理程序。最后,基本窗体还包含一个受保护的标签,表明可以从所有派生窗体中访问该标签。请注意,图 19 中的基本窗体不包含菜单。默认情况下,设计器在每个新创建的窗体上都创建一个名为 mainMenu1 的菜单控件。可以在基本窗体中创建一个菜单,甚至可以在派生窗体中扩展该菜单。但是,在删除派生窗体上的菜单以及将基类中菜单的访问属性设置为 Protected 或 Public 时要谨慎。

基本窗体中包含能够在派生窗体间共享的一些常用功能,如下面的代码示例所示。

using System;

派生窗体中继承了基本窗体中的控件。您能够认出继承的控件,因为控件的左上角会显示一个符号,如图 21 所示。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)

图21:继承符号

您还能够认出中间按钮是基本窗体的 private 按钮(表明该按钮无法替换),因为该按钮的左上角还有一个锁符号。另外,因为中间按钮的属性在派生窗体中无法修改,所以其属性灰显。当然,可以向继承窗体中添加其他控件。

图 20 中的第一个按钮是添加到继承窗体中的新按钮。整个应用程序在下载代码示例中称为 VisualInheritance,包含两个窗体,这两个窗体均继承自基本窗体。主窗体将替换 Overridable action 按钮单击事件处理程序以显示第二个继承窗体。第二个窗体不替换 Overridable action 按钮的单击事件处理程序,所以单击该按钮时将仅执行基本窗体中提供的默认事件处理程序。下面的代码示例显示了应用程序主窗体的源代码。

using System;

Visual Studio 显示一个用于添加连接的对话框,如图 23 中左侧图形所示。在此对话框中,可以附加到现有 SQL Mobile 数据库,也可以创建一个新的数据库。只要通过 ActiveSync 连接了设备,就可以在连接的设备上创建数据库,甚至可以附加到该设备上的现有数据库。假如要创建新的数据库,首先要在本地开发计算机上创建数据库,然后将其作为应用程序的一部分部署到设备。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)

图23:使用Add Connection(添加连接)对话框(左)和Create New SQL Server 2005 Mobile Edition

Database (创建新 SQL Server 2005 Mobile Edition 数据库)对话框(右)来创建新的本地 SQL Mobile 数据库

最后,您需要选择哪些数据库对象属于该向导将创建的数据集,如图 28 所示。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)

图28:通过使用Data Source Configuration Wizard(数据源配置向导)来选择数据库对象

要使用数据集中的所有数据,只需选择所有表。单击 Finish(完成)后,该向导将创建一个类型化数据集,您可以使用该数据集显示应用程序数据库中的数据,该应用程序使用数据绑定将各个数据项绑定到用户界面控件。将使用 MyDVDCollection 数据库的应用程序只显示了一列数据网格控件中可用的 DVD 标题,并使用父子关系显示相应类别。

您需要定义包含 DVD 标题的列表与包含数据集中类别的表之间的关系。同样,此操作您也可以使用 Visual Studio 2005 设计器完成,在本示例中是 DataSet Designer(数据集设计器),如图 29 所示。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)

图29:DataSet Designer(数据集设计器)

打开 DataSet Designer(数据集设计器)的方法有两种:右键单击 Solution Explorer(解决方案资源管理器)中的 MyDVDCollectionDataSet.xsd 文件,然后选择 View Designer(视图设计器);或者右键单击 Data Sources(数据源)窗格中显示的某一项,然后选择 Edit DataSet with Designer(使用设计器编辑数据集),如图 29 所示。假如 Data Sources(数据源)窗格未显示,可以通过选择 Data(数据)菜单上的 Data Sources(数据源)将其打开。

在 DataSet Designer(数据集设计器)中,您将看到数据集所包含的表的可视化表示形式。要创建不同表之间的关系,请选择某个表中的一个字段(该字段将表连接在一起),然后将该字段拖到需要建立关系的另一个表中。执行此操作将显示 Relation(关系)对话框。在此对话框中,您可以指定与数据集中的表相关的字段。在此示例中,DVDTitles 是父表,DVDCategories 是子表,它们通过 DVD_CategoryID 字段连接在一起,如图 30 所示。打开 Relation(关系)对话框的另一种方法是:右键单击其中某个表,指向 Add(添加),然后单击 Relation(关系)。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)
图30:定义两个表之间的关系

项目中有了数据库、为数据库创建了数据集并在数据集中定义了关系后,剩下的唯一要做的事情就是使数据显示在应用程序中。因为此示例非常简单,并且是为了显示帮助您创建使用 SQL Mobile 数据库的应用程序的 Visual Studio 设计器,所以用户界面本身没有什么特别之处。它仅包含数据网格控件(包含 DVD 标题)和文本框控件(显示每个 DVD 标题的相应类别)。在 Data Sources(数据源)窗格中,可以为每列或整个表选择特定用户界面控件。要执行此操作,请单击要在窗体上显示的列或表。之后,可以通过单击向下箭头按钮来展开可用于显示数据的用户界面控件。然后,选择要在窗体上显示的用户界面控件,将其拖到窗体中,如图 31 所示。使用此方式添加到窗体中的控件会自动绑定到基础数据,因此您不需要编写任何代码来显示当前数据库中已有的数据的内容。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)
图31:向应用程序中添加数据绑定控件

为了能够使用 DVDTitles 和 DVDCategories 之间的现有关系,可以从子表中拖出 DVD Category(DVD 类别)字段,子表显示在 DVDTitles 表的下面。编译和部署此应用程序时,数据库将随该应用程序部署到设备,您可以立即使用它,如图 32 所示。

使用Visual Studio 2005设计设备应用程序的用户界面和数据(1)

图32:完成的DVD集合应用程序

当然,假如您要添加新记录、删除或修改数据库中的记录,就需要添加一些代码 — 本文对这些操作不做说明。

结论

Visual Studio 2005 和 .NET Compact Framework 2.0 提供了许多即装即用的控件,这会立即提高您的工作效率。新用户界面设计器可以帮助您创建功能强大的用户界面。由于可以在设计器中使用外观,因此您会立即获得用户界面在实际设备上的真实外观。您甚至可以在纵向模式和横向模式(假如适用)中测试用户界面的外观,而无需编写一行代码。使用数据设计器可以在开发计算机上创建和维护 SQL Mobile 数据库,然后将它们部署到设备。本文提供了 Visual Studio 2005 关于设计工具的一些功能的示例。还有更多功能有待探索,希望您有足够的热情来亲自探索 Visual Studio 2005 的许多其他功能。