微軟的 框架
版確實很好地滿足了我們的要求
NET在以下兩方面有重要的意義
它不僅根本性地改變了開發者構建與發布 Windows 應用程序的方法
而且還創建了一個巨大的具有很好伸縮特性的技術平台
Visual Studio
就是一個很好的例子
它在用戶的可定制性和改進的功能性方面都表現的很好
這些變化影響的范圍主要集中在 Microsoft
NET框架中的 Windows 窗體子集
從核心的 System
Windows
Forms 命名空間擴展到多種多樣的支持性技術
既有舊的也有新的
包括ADO
NET
ObjectSpaces 以及 ClickOnce 部署
在 Visual Studio
的各個方面都能發現生產效率的提高
包括增強的集成開發環境
改進的控件和數據設計器
還有代碼生成器
由於不必手工編寫各種各樣預定格式的代碼
代碼編寫狂們可能會感到沮喪
而我們就可以有更多的時間來享受我們的生活了
SystemWindowsForms 一些重要的工作已經在 System
Windows
Forms 中做好了
激動人心的新技術中便包含了 Windows 窗體
就在我寫本文的同時
可用的命名空間數量和公用類型與成員的組成分別增加了
% 和
%
這無疑標志著 Visual Studio
是一個卓越的產品
當然本文中我們沒有足夠的篇幅來講述每一件事
Figure
向我們展示了主要改進方面的概覽
這些新增與加強的改進覆蓋面較廣
例如更好的主題支持
改進的數據綁定
以及 GridView 控件
Figure 新的 Windows 窗體特性 Windows 主題支持 當像以往一樣創建一個新的Windows窗體工程後
你會發現一個新的變化
默認的Windows主題支持
一個Windows主題就是一組個性化的用戶設定
它展示了Windows用戶界面的外觀
你可以通過在桌面上單擊鼠標右鍵並在彈出的
顯示屬性對話框
中選擇
屬性
|
主題
屬性頁來指定桌面主題
因為Windows主題是由用戶指定的
所以Windows窗體承擔了表現它的責任
雖然現有版本的
NET框架支持Windows主題
但是
版本需要開發者在文件系統的指定位置添加一個擁有特殊名字的文件來實現
而
版通過提供Application
EnableVisualStyles方法並將每個控件的FlatStyle屬性值設為
System
來支持Windows主題
從而簡化了
版的實現過程
Visual Studio
將會進一步改進此過程
在建立新的Windows窗體工程時默認調用EnableVisualStyles 方法使窗體默認支持Windows主題
public class Form
: System
Windows
Forms
Form {
[STAThread]
static void Main() {
Application
EnableVisualStyles();
Application
Run(new Form
());
}
}
在以前
將控件的FlatStyle屬性值設為
System
就意味著操作系統決定了控件顯示時的外觀
現在
當FlatStyle屬性設置為默認值
Standard
時
Visual Studio
的大部分控件都會依據當前正在使用的Windows主題來呈現自己
這與先通過系統設定然後保存你在設計器中的設定結果基本上是一樣的
無論FlatStyle 屬性為
Standard
還是
System
窗體在運行時會依據主題的改變動態地作出反應
卻不需要編寫一行代碼
這種關於主題的靈敏性對開發者是有利的
控制布局與配置 支持 Windows 主題只需要創建一個工程或窗體
並放入需要的控件
然而
對窗體上的控件進行布局
並對其進行配置是件耗時的工作
尤其是那些復雜的窗體
為了簡便
Windows窗體設計器加入了一些新特性
目的就是減少這些瑣碎事情所消耗的設計時間
這些特性包括吸附對齊
編輯屬性模式以及智能標記
這些特性使操作控件更加容易
你仍舊可以使用Visual Studio的布局工具條來水平或垂直對齊控件
你只需對窗體上的那些控件操縱一次
除此之外
你可以使用吸附對齊來達到與拖拽控件一樣的效果
同時避免了在使用布局工具條時選擇控件和工具條按鈕所帶來的設計時間的浪費
吸附式對齊表現為一條或多條有粘性的藍色線條
控件在這些線條的導引下與鄰近的控件對齊
Figure 編輯屬性 另一個新特性
編輯屬性模式
允許你用Tab鍵遍歷控件並在頁面上直接改變它們的屬性
首先在Windows窗體設計器的上下文菜單中點擊選擇與其同名的菜單項使編輯屬性模式被激活
下一步就是遍歷控件並按照你的要求修改屬性
過程如Figure
所示
編輯完成後
點擊
返回布局模式
回到正常的編輯模式
設置屬性是一個改變控件的簡便方法
用另外一個更合適的控件來完全替換當前控件可不容易
你需要刪除這個控件
然後將一個新控件拖入窗體並重新配置它
應付像這樣復雜的多步設計任務
智能標記正好派上用場
它將設計時的多步任務合並為一步
並在相關控件附近顯示菜單項圖標作為其標記
智能標記也可以處理簡單的設計時任務
這經常會發生
例如在將一個文本框拖放入一個窗體時改變它的
Text
屬性
控件與數據綁定 集成開發環境的另一項改進是Visual Studio
中的Windows窗體提供了新的控件
並改進了廣受歡迎的舊控件例如文本框和復合列表框
Figure
顯示了一個用新增控件和使用中的改進控件創建的小型浏覽器
創建他們所需要的代碼比在Windows窗體的上個版本中要少
Figure 使用新控件的Web浏覽器 這個簡單的例子展示了怎樣用Visual Studio
中增強的工具箱創建豐富的程序
同時減少了代碼的編寫
例如
設計這個功能齊全的小型浏覽器僅僅花了大約
分鐘
並且只編寫了
行代碼來實現傳統的全部網頁浏覽事件
它還實現了URL訪問歷史記錄功能
網頁導航和HTML呈現的實際工作是由右側塊形容器中的WebBrowser控件完成的
分割條和左右塊形容器都是由一個SplitContainer控件提供的
Figure
中顯示的復合列表框展示了新型的自動完成支持功能
自動完成功能通過
個屬性來實現
首先是AutoCompleteMode
它可以讓你選擇樣式枚舉值來設置自動完成樣式:
enum AutoCompleteMode {
None =
x
// No autocompletion
AutoSuggest =
x
// Possible matches chosen from drop
down list
AutoAppend =
x
// Possible matches
// appended to text
// while typing
AutoSuggestAppend =
x
// AutoSuggest and
// AutoAppend combined
}
除了選擇
None
其他選項都需要你設置AutoCompleteSource屬性
其值為系統預先設定好的AutoCompleteSource枚舉值 :
enum AutoCompleteSource {
FileSystem =
x
// File system
HistoryList =
x
// All URLs from History list
RecentlyUsedList =
x
// All URLs from Recently Used list
AllURL =
x
// HistoryList + RecentlyUsedList
AllSystemSources =
x
// FileSystem + AllURL
CustomSource =
x
// AutoCompleteCustomSource
None =
x
// No source
}
設定自定義源的復合列表框需要我們提供自動完成選項
這些選項可以來自存儲在AutoCompleteCustomSource屬性中的元素的集合
目前
復合列表框和文本框是僅有的提供自動完成功能的控件
GridView 工具箱中的大多數控件都支持數據綁定
通過底層的數據綁定構件來綁定各種各樣的數據源
在目前許多情形下
尤其是原型和快速開發中
數據綁定都是關鍵
Windows窗體開發小組用改進的類型化數據集明顯地加強了數據綁定命名空間
包括GridView和DataContainer
並為快速開發加強了設計時支持
這些特性讓你開發分區域樣式的用戶界面或表格樣式的用戶界面時感到一樣的輕松
有時表格樣式的用戶界面更適合展現綁定的數據
並且另一方面
微軟在其前一個版本的
NET框架中包含了DataGrid控件
對於Visual Studio
來說
Windows窗體開發小組響應了社區中關於DataGrid的反饋並決定構造一個新的表格控件
System
Windows
Forms
GridView (參見 Figure
)
Figure GridView 列 也許DataGrid與GridView(表格視圖)最明顯的區別就是GridView的對象模型
它已經被抽象為一個基於列
行的自然表格結構
允許開發者通過大量直觀的定位函數來操縱每一個單元格
包括以下幾點
通過樣式
格式
布局和選擇項支持豐富的自定義用戶界面
與DataGrid相比具有顯示更多種類數據的能力
新增了一組更加豐富類型
包括圖像
諸如凍結列(與Excel中的相似)這樣的精彩特性和運行時列的重新排序(與Outlook中的相似)
構成它的子控件在導航
編輯
驗證
自繪和錯誤處理等方面擁有有超過
個事件
結合過去廣泛的設計經驗
這些新特性使我們可以快速自定義控件而不用寫很多代碼
其實是將對DataGrid的特定編碼塞進了GridView的方法
屬性和事件中
其中的一個例子就是在DataGrid中通過單擊單元格來選擇一行
而現在以GridView的SelectionMode 屬性的方式暴露出來
當然沒有一個控件是十全十美的
當它們表現出不足時
開發者應該依靠其擴展特性來組合出具有自定義特性的控件
GridView控件的底層實現都是基於多種單元格
行和列的
你可以繼承並進行擴展
總的來說
GridView作為表格樣式的控件比DataGrid更加引人注目
<
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25551.html