熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

增強的Windows窗體為.Net程序豐富用戶界面

2022-06-13   來源: Java核心技術 

  
  微軟的 框架 版確實很好地滿足了我們的要求NET在以下兩方面有重要的意義它不僅根本性地改變了開發者構建與發布 Windows 應用程序的方法而且還創建了一個巨大的具有很好伸縮特性的技術平台Visual Studio 就是一個很好的例子它在用戶的可定制性和改進的功能性方面都表現的很好這些變化影響的范圍主要集中在 Microsoft NET框架中的 Windows 窗體子集從核心的 SystemWindowsForms 命名空間擴展到多種多樣的支持性技術既有舊的也有新的包括ADONETObjectSpaces 以及 ClickOnce 部署
  在 Visual Studio 的各個方面都能發現生產效率的提高包括增強的集成開發環境改進的控件和數據設計器還有代碼生成器由於不必手工編寫各種各樣預定格式的代碼代碼編寫狂們可能會感到沮喪而我們就可以有更多的時間來享受我們的生活了
  
  SystemWindowsForms
  一些重要的工作已經在 SystemWindowsForms 中做好了激動人心的新技術中便包含了 Windows 窗體就在我寫本文的同時可用的命名空間數量和公用類型與成員的組成分別增加了% 和 %這無疑標志著 Visual Studio 是一個卓越的產品當然本文中我們沒有足夠的篇幅來講述每一件事 Figure 向我們展示了主要改進方面的概覽這些新增與加強的改進覆蓋面較廣例如更好的主題支持改進的數據綁定以及 GridView 控件
  
 

  
Figure 新的 Windows 窗體特性

  
  Windows 主題支持
  當像以往一樣創建一個新的Windows窗體工程後你會發現一個新的變化默認的Windows主題支持一個Windows主題就是一組個性化的用戶設定它展示了Windows用戶界面的外觀你可以通過在桌面上單擊鼠標右鍵並在彈出的顯示屬性對話框中選擇屬性|主題屬性頁來指定桌面主題
  因為Windows主題是由用戶指定的所以Windows窗體承擔了表現它的責任雖然現有版本的NET框架支持Windows主題但是版本需要開發者在文件系統的指定位置添加一個擁有特殊名字的文件來實現版通過提供ApplicationEnableVisualStyles方法並將每個控件的FlatStyle屬性值設為System來支持Windows主題從而簡化了版的實現過程 Visual Studio 將會進一步改進此過程在建立新的Windows窗體工程時默認調用EnableVisualStyles 方法使窗體默認支持Windows主題
  
  public class Form : SystemWindowsFormsForm {
  
  [STAThread]
  static void Main() {
  ApplicationEnableVisualStyles();
  ApplicationRun(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 dropdown 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的反饋並決定構造一個新的表格控件SystemWindowsFormsGridView (參見 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
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.