微軟的 .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"就意味著操作系統決定了控件顯示時的外觀?,F在,當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 }