微软的 .net 框架 1.0 版确实很好地满足了我们的要求。.NET在以下两方面有重要的意义,它不仅根本性地改变了开发者构建与发布 Windows 应用程序的方法,而且还创建了一个巨大的具有很好伸缩特性的技术平台,Visual Studio2005 就是一个很好的例子,它在用户的可定制性和改进的功能性方面都表现的很好。这些变化影响的范围主要集中在 Microsoft .NET框架中的 Windows 窗体子集,从核心的 System.Windows.Forms 命名空间扩展到多种多样的支持性技术,既有旧的也有新的,包括ADO.NET,ObjectSpaces 以及 ClickOnce 部署。 在 Visual Studio 2005 的各个方面都能发现生产效率的提高,包括增强的集成开发环境,改进的控件和数据设计器,还有代码生成器。由于不必手工编写各种各样预定格式的代码,代码编写狂们可能会感到沮丧,而我们就可以有更多的时间来享受我们的生活了。
System.Windows.Forms 一些重要的工作已经在 System.Windows.Forms 中做好了,激动人心的新技术中便包含了 Windows 窗体。就在我写本文的同时,可用的命名空间数量和公用类型与成员的组成分别增加了67% 和 127%,这无疑标志着 Visual Studio 2005 是一个卓越的产品。当然本文中我们没有足够的篇幅来讲述每一件事, Figure 1 向我们展示了主要改进方面的概览,这些新增与加强的改进覆盖面较广,例如更好的主题支持,改进的数据绑定,以及 GridView 控件。
Figure 1 新的 Windows 窗体特性
Windows 主题支持 当像以往一样创建一个新的Windows窗体工程后,你会发现一个新的变化:默认的Windows主题支持。一个Windows主题就是一组个性化的用户设定,它展示了Windows用户界面的外观。你可以通过在桌面上单击鼠标右键并在弹出的“显示属性对话框”中选择“属性”“主题”属性页来指定桌面主题。 因为Windows主题是由用户指定的,所以Windows窗体承担了表现它的责任。虽然现有版本的.NET框架支持Windows主题,但是1.0版本需要开发者在文件系统的指定位置添加一个拥有非凡名字的文件来实现。而1.1版通过提供application.EnableVisualStyles方法并将每个控件的FlatStyle属性值设为"System"来支持Windows主题,从而简化了1.0版的实现过程。 Visual Studio 2005 将会进一步改进此过程,在建立新的Windows窗体工程时默认调用EnableVisualStyles 方法使窗体默认支持Windows主题:
public class Form1 : System.Windows.Forms.Form { ... [STAThread] static void Main() { Application.EnableVisualStyles(); Application.Run(new Form1()); } ... } 在以前,将控件的FlatStyle属性值设为"System"就意味着操作系统决定了控件显示时的外观。现在,当FlatStyle属性设置为默认值"Standard"时, Visual Studio 2005的大部分控件都会依据当前正在使用的Windows主题来呈现自己。这与先通过系统设定然后保存你在设计器中的设定结果基本上是一样的。无论FlatStyle 属性为"Standard"还是"System",窗体在运行时会依据主题的改变动态地作出反应,却不需要编写一行代码,这种关于主题的灵敏性对开发者是有利的。
控制布局与配置 支持 Windows 主题只需要创建一个工程或窗体,并放入需要的控件。然而,对窗体上的控件进行布局,并对其进行配置是件耗时的工作,尤其是那些复杂的窗体。为了简便,Windows窗体设计器加入了一些新特性,目的就是减少这些琐碎事情所消耗的设计时间。这些特性包括吸附对齐、编辑属性模式以及智能标记,这些特性使操作控件更加轻易。你仍然可以使用Visual Studio的布局工具条来水平或垂直对齐控件,你只需对窗体上的那些控件操纵一次。除此之外,你可以使用吸附对齐来达到与拖拽控件一样的效果,同时避免了在使用布局工具条时选择控件和工具条按钮所带来的设计时间的浪费。吸附式对齐表现为一条或多条有粘性的蓝色线条,控件在这些线条的导引下与邻近的控件对齐。
控件与数据绑定 集成开发环境的另一项改进是Visual Studio 2005中的Windows窗体提供了新的控件,并改进了广受欢迎的旧控件例如文本框和复合列表框。Figure 3显示了一个用新增控件和使用中的改进控件创建的小型浏览器,创建他们所需要的代码比在Windows窗体的上个版本中要少。
Figure 3 使用新控件的Web浏览器
这个简单的例子展示了怎样用Visual Studio 2005中增强的工具箱创建丰富的程序,同时减少了代码的编写。例如,设计这个功能齐全的小型浏览器仅仅花了大约10分钟,并且只编写了85行代码来实现传统的全部网页浏览事件,它还实现了URL访问历史记录功能。网页导航和Html呈现的实际工作是由右侧块形容器中的WebBrowser控件完成的。分割条和左右块形容器都是由一个SplitContainer控件提供的。 Figure 3 中显示的复合列表框展示了新型的自动完成支持功能。自动完成功能通过3个属性来实现,首先是AutoCompleteMode,它可以让你选择样式枚举值来设置自动完成样式: enum AutoCompleteMode { None = 0x0, // No autocompletion AutoSuggest = 0x1, // Possible matches chosen from drop-down list AutoAppend = 0x2, // Possible matches // appended to text // while typing AutoSuggestAppend = 0x3 // AutoSuggest and // AutoAppend combined } 除了选择"None",其他选项都需要你设置AutoCompleteSource属性,其值为系统预先设定好的AutoCompleteSource枚举值 :
enum AutoCompleteSource { FileSystem = 0x1, // File system HistoryList = 0x2, // All URLs from History list RecentlyUsedList = 0x4, // All URLs from Recently Used list AllURL = 0x6, // HistoryList + RecentlyUsedList AllSystemSources = 0x7, // FileSystem + AllURL CustomSource = 0x40, // AutoCompleteCustomSource None = 0x80 // No source }