如何禁用 WebBrowser 控制項縮放和左右移動

來源:互聯網
上載者:User

標籤:des   http   os   檔案   io   re   

 

 

我認為有兩種方法可以實現。1, WebBrowser 是基於IE 9的,所以WebBrowser 也是支援最新的HTML5標準。然而在HTML中有許多控制項是通過Browser的 pan 和zoom等手持行為起作 用的,您可以設定HTML中的 viewport metadata 元素來實現。如:將下面的HTML代碼加入到您的HTML檔案頭上。<meta name="viewport" content="user-scalable=no" />2, WebBroswer控制項的組成是一棵樹型結構如:\-WebBrowser
  \-Border
    \-Border
      \-PanZoomContainer
        \-Grid
          \-Border (*)
            \-ContentPresenter
              \-TileHost
其中 TileHost 就是原始的IE9組件,TileHost 不處理所有的manipulation相關的事件,而是由PanZoomContainer來處理,將這些事件轉換成手持,然後將結果傳輸到TileHost。換句話說我們可以中斷相關的manipulationg事件傳輸到PanZoomContainer。當這些事件還未bubble up到PanZoomContainer時,當這些事件設定為已經處理過。這個方法的關鍵步驟有2步:1, 需要從WebBroswer組件樹中找到Border控制項。2, 處理manipulation相關的事件,並設定該事件已經處理過 e.Handled = true;。
例如:

using LinqToVisualTree;

public class WebBrowserHelper

{

public WebBrowser _browser;

 

/// <summary>

/// Gets or sets whether to suppress the scrolling of

/// the WebBrowser control;

/// </summary>

public bool ScrollDisabled { get; set; }

 

public WebBrowserHelper(WebBrowser browser)

{

_browser = browser;

browser.Loaded += new RoutedEventHandler(browser_Loaded);

}

 

private void browser_Loaded(object sender, RoutedEventArgs e)

{

var border = _browser.Descendants<Border>().Last() as Border;

 

border.ManipulationDelta += Border_ManipulationDelta;

border.ManipulationCompleted += Border_ManipulationCompleted;

}

 

private void Border_ManipulationCompleted(object sender,

ManipulationCompletedEventArgs e)

{

// suppress zoom

if (e.FinalVelocities.ExpansionVelocity.X != 0.0 ||

e.FinalVelocities.ExpansionVelocity.Y != 0.0)

e.Handled = true;

}

 

private void Border_ManipulationDelta(object sender,

ManipulationDeltaEventArgs e)

{

// suppress zoom

if (e.DeltaManipulation.Scale.X != 0.0 ||

e.DeltaManipulation.Scale.Y != 0.0)

e.Handled = true;

 

// optionally suppress scrolling

if (ScrollDisabled)

{

if (e.DeltaManipulation.Translation.X != 0.0 ||

e.DeltaManipulation.Translation.Y != 0.0)

e.Handled = true;

}

}

}

 

詳細說明:http://wp.662p.com/thread-7952-1-1.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.