使用CefSharp在.Net程式中嵌入Chrome瀏覽器(七)——右鍵選單
一個常用的功能就是禁止瀏覽器本身的右鍵選單,靠在WPF中攔截滑鼠事件是不行的,可以通過設定MenuHandler來實現。
首先實現一個IContextMenuHandler。
public class NullMenuHandler : IContextMenuHandler { public bool RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback) { return false; } public void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model) { model.Clear(); } public void OnContextMenuDismissed(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame) { } public bool OnContextMenuCommand(IWebBrowserchromiumWebBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommandcommandId, CefEventFlags eventFlags) { throw new NotImplementedException(); } } View Code
然後指定chrome的MenuHandler即可。
_webView
=
new
ChromiumWebBrowser
()
{
MenuHandler
=
new
NullMenuHandler
()
};
這種方式也可以自定義右鍵選單,詳細資訊參考如下。ofollow,noindex" target="_blank">MenuHandler.cs
定製右鍵選單也可以採用如下做法:
這樣的方式下,可以直接使用WPF的右鍵選單,並且也可以根據html元素的事件靈活顯示選單,雖然工作量大些,但更加靈活和自由,也可以和系統的右鍵選單風格一致。