2015-12-12 161 views
4

我在我的項目中使用CefSharp.WinForms.ChromiumWebBrowser v45。當我右鍵點擊進入網頁瀏覽器,默認的上下文菜單會顯示:如何隱藏CefSharp.WinForms.ChromiumWebBrowser右鍵單擊上下文菜單?

dialog picture

但我不想顯示任何東西。我該怎麼辦?

+0

請出示了一些研究工作,並告訴我們你已經想到 –

+0

我希望我的軟件用戶沒有知道這個上下文菜單是否存在。但是當他們在webbrowser上選擇了一些文本,並且右鍵單擊時,他們可以使用「複製」上下文菜單。我只禁用頁面默認的右鍵菜單。 – hubpan

回答

2

如果您實施IContextMenuHandler,則可以控制ContextMenu。下面的兩個鏈接演示了需要什麼(以及一些其他有用的功能)。

https://github.com/cefsharp/CefSharp/blob/935d3900ba2147f4786386596b62339087ff61b0/CefSharp.WinForms.Example/Handlers/MenuHandler.cs#L15

https://github.com/cefsharp/CefSharp/blob/c18f951a97a515df112d67775c767d4222f88c23/CefSharp.WinForms.Example/BrowserTabUserControl.cs#L31

一般來說,CefSharp.WinForms.Example項目演示了不少功能,檢查出來,如果你需要其他的功能。

+0

非常感謝! – hubpan

11

這是像我這樣懶惰的人的實現代碼。它是基於CefSharp v53.0.0

public class CustomMenuHandler : CefSharp.IContextMenuHandler 
{ 
    public void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model) 
    { 
     model.Clear(); 
    } 

    public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags) 
    { 

     return false; 
    } 

    public void OnContextMenuDismissed(IWebBrowser browserControl, IBrowser browser, IFrame frame) 
    { 

    } 

    public bool RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback) 
    { 
     return false; 
    } 
} 

如何使用它

ChromiumWebBrowser browser = new ChromiumWebBrowser(); 
browser.MenuHandler = new CustomMenuHandler(); 
+0

偉大的想法 - 我想提高該 1.根據需要創建新的CS文件:CustomMenuHandler.cs 2.寫完整CustomMenuHandler 3.保存它! 4. chromeBrowser.menuHandler = new CustomMenuHandler(); 仍然與v53.0.1一起工作耶! – SourceSkyBoxer

1
webBrowser.PreviewMouseRightButtonDown += HandleWebBrowserPreviewMouseRightButton; 
webBrowser.PreviewMouseRightButtonUp += HandleWebBrowserPreviewMouseRightButton; 

private void HandleWebBrowserPreviewMouseRightButton(object sender, MouseButtonEventArgs e) { 
      // Preventing right-click until https://github.com/cefsharp/CefSharp/issues/1915 is fixed 
      e.Handled = true; 
} 
相關問題