如何禁用使用C#的Chromium Web瀏覽器中的右鍵單擊上下文菜單?ChromiumWebBrowser禁用右鍵單擊上下文菜單C#
我發現這個Disable context menu in Chromium Embedded 3 (DCEF3),但我不熟悉語法(我正在使用C#),另外我沒有看到名爲OnBeforeContextMenu的CefSharp.WinForms.ChormiumWebBrowser類上的事件。
如何禁用使用C#的Chromium Web瀏覽器中的右鍵單擊上下文菜單?ChromiumWebBrowser禁用右鍵單擊上下文菜單C#
我發現這個Disable context menu in Chromium Embedded 3 (DCEF3),但我不熟悉語法(我正在使用C#),另外我沒有看到名爲OnBeforeContextMenu的CefSharp.WinForms.ChormiumWebBrowser類上的事件。
好吧,我能夠弄清楚這一點。在我原來的問題中引用的文章的問題是它使用嵌入式Chromium組件。我沒有使用它。我正在使用cefsharp鉻網頁瀏覽器。要隱藏右鍵單擊上下文菜單,我在本文中找到了答案:https://github.com/cefsharp/CefSharp/issues/107
您只需定義一個實現IMenuHandler接口的類,然後將瀏覽器控件的MenuHandler屬性設置爲此類。最後在類中返回OnBeforeContextMenu方法中的FALSE。這裏是類:
public class CustomMenuHandler : IMenuHandler
{
public bool OnBeforeContextMenu(IWebBrowser browser)
{
return false;
}
}
接下來,鉻網頁瀏覽器的MenuHandler財產的情況下設置爲該類:
var browser = new ChromiumWebBrowser(string.empty);
browser.MenuHandler = new CustomMenuHandler();
爲我工作。
我面臨同樣的問題,但上述方案可能不再適用,因爲該接口IMenuHandler
(更名爲IContextMenuHandler
)使用已經有了一些改變,不再存在
bool OnBeforeContextMenu(IWebBrowser browser);
現在具有以下簽名:
void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model);
的SO問題的問題(Disable context menu in Chromium Embedded 3 (DCEF3))連接與Pascal和Inno Setup的腳本來完成,但調整爲C#和ChromiumWebBrowser
接受的答案工作爲了我。解決方法是在執行OnBeforeContextMenu
時清除模型參數。的IContextMenuHandler
實現可以是這樣的:
public class CustomContextHandler : IContextMenuHandler
{
public void OnBeforeContextMenu(IWebBrowser browserControl, CefSharp.IBrowser browser, IFrame frame, IContextMenuParams parameters,
IMenuModel model)
{
model.Clear();
}
public bool OnContextMenuCommand(IWebBrowser browserControl, CefSharp.IBrowser browser, IFrame frame, IContextMenuParams parameters,
CefMenuCommand commandId, CefEventFlags eventFlags)
{
return false;
}
public void OnContextMenuDismissed(IWebBrowser browserControl, CefSharp.IBrowser browser, IFrame frame)
{
}
}
然後在創建該鉻web瀏覽器的目標代碼:
browser = new ChromiumWebBrowser(url);
browser.MenuHandler = new CustomContextHandler();
這是一個過時的答案了。不適用於版本49。 –