使用CefSharp在.Net程序中嵌入Chrome瀏覽器(七)——右鍵菜單
阿新 • • 發佈:2019-01-10
靈活 white .html chrom mod new htm nco blue 原文:使用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) {View Codereturn 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(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags) { throw new NotImplementedException(); } }
然後指定chrome的MenuHandler即可。
_webView = new ChromiumWebBrowser()
{
MenuHandler = new NullMenuHandler()
};
這種方式也可以自定義右鍵菜單,詳細信息參考如下。MenuHandler.cs
定制右鍵菜單也可以采用如下做法:
- 用上面的方式將Chrome自己的菜單屏蔽,
- 把HTML元素的右鍵點擊事件通過腳本集成的方式回調給主程序,彈出自定義的WPF右鍵菜單
- WPF的右鍵菜單執行後,將命令用腳本的方式傳遞給Chrome
這樣的方式下,可以直接使用WPF的右鍵菜單,並且也可以根據html元素的事件靈活顯示菜單,雖然工作量大些,但更加靈活和自由,也可以和系統的右鍵菜單風格一致。
使用CefSharp在.Net程序中嵌入Chrome瀏覽器(七)——右鍵菜單