熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

為 .NET Compact Framework 開發能夠識別方向和 dpi 的應用程序[1]

2013-11-13 12:12:21  來源: .NET編程 

  簡介

  Windows Mobile Second Edition 軟件支持具有橫向和方屏幕顯示器的設備這是對早期 Pocket PC 上傳統的僅縱向顯示器的附加功能當在方形或橫向顯示器上運行為縱向顯示器設計的應用程序時操作系統將自動向窗體添加一個縱向滾動條以便使用戶能夠查看整個窗體僅當有一個控件由於遷移到橫向而向用戶隱藏時才會發生這種情況在大多數情況下這不是用戶界面在橫向顯示器上顯示的理想方式另外還有兩種替代方式一個是創建能夠在兩個方向下正常工作的單個界面布局另一個是為每個方向創建一個單獨的界面布局

  要使用單個布局在所有三個方向下正常工作請對窗體進行排列以便所有控件都位於一個方形的 x 區域中如圖 所示這是最容易實現的解決方案但它可能無法滿足復雜窗體的需要


具有被設置為方形區域的控件的縱向和橫向顯示器

  要充分利用縱向和橫向這兩個方向必須為每個方向定義單獨的布局此外還必須使用 FormResize 事件來確定當前的方向並根據需要重新定位控件

  在大多數情況下沒有必要為方形屏幕創建自定義布局相反可以使用縱向布局並且系統將自動為其添加垂直滾動條

  為每個方向創建單獨的布局代碼

  為這兩個方向中的每一個定義一個函數在這些函數中設置窗體上每個控件的 Size 和 Location 屬性

  下面的示例說明了如何更新 Visual Studio NET 中隨附的 WebCrawler 示例以使其能夠識別方向可以將相同的步驟應用於任何現有應用程序或新應用程序以使其能夠識別方向

  Visual Studio NET 窗體設計器不顯式支持多個布局的創建但仍然可以將其用作工具以幫助您使用以下過程創建相應的代碼

使用設計器為縱向顯示器創建布局

查看該設計器生成的代碼該代碼位於一個名為 InitializeComponent 的函數中可以通過展開Windows 窗體設計器生成的代碼區域找到

創建一個名為 Portrait() 並以縱向模式定位控件的新函數並且將用於設置控件的 Location 和 Size 屬性的代碼從 InitializeComponent 復制到 Portrait() 中

使用該設計器以橫向模式所需的布局重新定位控件

 

使用該設計器為橫向模式生成的定位代碼來重復執行步驟

  protected void Portrait()
  {
     thiscrawlTimeLocation = new SystemDrawingPoint( );
     thiscrawlTimeSize = new SystemDrawingSize( );
     thiscrawlTimeLabelLocation = new SystemDrawingPoint( );
     thiscrawlTimeLabelSize = new SystemDrawingSize( );
     thiscrawlStartTimeLocation = new SystemDrawingPoint( );
     thiscrawlStartTimeSize = new SystemDrawingSize( );
     thiscrawlStartedLabelLocation = new SystemDrawingPoint( );
     thiscrawlStartedLabelSize = new SystemDrawingSize( );
     thislightLocation = new SystemDrawingPoint( );
     thislightSize = new SystemDrawingSize( );
     thislightLocation = new SystemDrawingPoint( );
     thislightSize = new SystemDrawingSize( );
     thislinkCountLocation = new SystemDrawingPoint( );
     thislinkCountSize = new SystemDrawingSize( );
     thislinkCountLabelLocation = new SystemDrawingPoint( );
     thislinkCountLabelSize = new SystemDrawingSize( );
     thiscurrentPageBoxLocation = new SystemDrawingPoint( );
     thiscurrentPageBoxSize = new SystemDrawingSize( );
     thiscurrentPageLabelLocation = new SystemDrawingPoint( );
     thiscurrentPageLabelSize = new SystemDrawingSize( );
     thisaddressLabelLocation = new SystemDrawingPoint( );
     thisaddressLabelSize = new SystemDrawingSize( );
     thisnoProxyCheckLocation = new SystemDrawingPoint( );
     thisnoProxyCheckSize = new SystemDrawingSize( );
     thisstartButtonLocation = new SystemDrawingPoint( );
     thisstartButtonSize = new SystemDrawingSize( );
     thisaddressBoxLocation = new SystemDrawingPoint( );
     thisaddressBoxSize = new SystemDrawingSize( );
  }

  protected void Landscape()
  {
     thiscrawlTimeLocation = new SystemDrawingPoint( );
     thiscrawlTimeSize = new SystemDrawingSize( );
     thiscrawlTimeLabelLocation = new SystemDrawingPoint( );
     thiscrawlTimeLabelSize = new SystemDrawingSize( );
     thiscrawlStartTimeLocation = new SystemDrawingPoint( );
     thiscrawlStartTimeSize = new SystemDrawingSize( );
     thiscrawlStartedLabelLocation = new SystemDrawingPoint( );
     thiscrawlStartedLabelSize = new SystemDrawingSize( );
     thislightLocation = new SystemDrawingPoint( );
     thislightSize = new SystemDrawingSize( );
     thislightLocation = new SystemDrawingPoint( );
     thislightSize = new SystemDrawingSize( );
     thislinkCountLocation = new SystemDrawingPoint( );
     thislinkCountSize = new SystemDrawingSize( );
     thislinkCountLabelLocation = new SystemDrawingPoint( );
     thislinkCountLabelSize = new SystemDrawingSize( );
     thiscurrentPageBoxLocation = new SystemDrawingPoint( );
     thiscurrentPageBoxSize = new SystemDrawingSize( );
     thiscurrentPageLabelLocation = new SystemDrawingPoint( );
     thiscurrentPageLabelSize = new SystemDrawingSize( );
     thisaddressLabelLocation = new SystemDrawingPoint( );
     thisaddressLabelSize = new SystemDrawingSize( );
     thisnoProxyCheckLocation = new SystemDrawingPoint( );
     thisnoProxyCheckSize = new SystemDrawingSize( );
     thisstartButtonLocation = new SystemDrawingPoint( );
     thisstartButtonSize = new SystemDrawingSize( );
     thisaddressBoxLocation = new SystemDrawingPoint( );
     thisaddressBoxSize = new SystemDrawingSize( );
  }

[]  []  


From:http://tw.wingwit.com/Article/program/net/201311/15398.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.