2017-03-21 1 views
0

In meiner Windows-Formularanwendung (WinForms) verwende ich CEFSharp, um eine Webseite zu öffnen. Ich möchte den Kontext der rechten Maustaste ändern, damit der Benutzer die URL anzeigen kann, die geöffnet wurde. Derzeit hat der Kontext „Zurück“, „Vorwärts“, „Drucken ...“ und „View Source“Kann der URI dem Benutzer mit CEFSharp angezeigt werden?

+1

Sie können das Kontextmenü anpassen http://cefsharp.github.io/api/55.0.0/html/T_CefSharp_IContextMenuHandler.htm mit – amaitland

+0

CEF Debugging-Unterstützung hat! Diese Antwort gab mir genug von dem, was ich brauchte http://Stackoverflow.com/a/31577099/139689 – MADCookie

Antwort

1

Der Kommentar von @amaitland bekam den Ball ins Rollen. Hier ist meine Implementierung. Ich hoffe, das hilft jemand anderem.

Wenn Sie Ihre Instanz von WinForms.ChromiumWebBrowser initialisieren, legen Sie ihre Eigenschaft MenuHandler auf Ihre Instanz eines IContextMenuHandler fest.

chromeBrowser = New WinForms.ChromiumWebBrowser(uri) 
    chromeBrowser.MenuHandler = New Classes.CefBasicMenuHandler() 
    Controls.Add(chromeBrowser) 

Ihre Implementierung eines IContextMenuHandler ist, wo Sie das Kontextmenü steuern können.

Public Class CefBasicMenuHandler 
Implements IContextMenuHandler 

private const ShowDevTools as Integer = 26501 
private const CloseDevTools as Integer = 26502 
Private Const CopyUrlAddress as Integer = 26503 

Public Sub OnBeforeContextMenu(browserControl As IWebBrowser, browser As IBrowser, frame As IFrame, parameters As IContextMenuParams, model As IMenuModel) Implements IContextMenuHandler.OnBeforeContextMenu 
    '//To disable the menu then call clear 
    model.Clear() 

    '//Add new custom menu items 
    model.AddItem(CType(CopyUrlAddress, CefMenuCommand), "Copy URL address") 
    model.AddSeparator() 
    model.AddItem(CType(ShowDevTools, CefMenuCommand), "Show DevTools") 
    model.AddItem(CType(CloseDevTools, CefMenuCommand), "Close DevTools") 
    model.AddSeparator() 
    model.AddItem(CefMenuCommand.Reload, "Reload") 
    model.AddItem(CefMenuCommand.Copy, "Copy") 
End Sub 

Public Function OnContextMenuCommand(browserControl As IWebBrowser, browser As IBrowser, frame As IFrame, parameters As IContextMenuParams, commandId As CefMenuCommand, eventFlags As CefEventFlags) As Boolean Implements IContextMenuHandler.OnContextMenuCommand 
    Dim commandId1 As Integer = CType(commandId, Integer) 

    If commandId1 = ShowDevTools Then 
     browser.ShowDevTools() 
    End If 
    If commandId1 = CloseDevTools Then 
     browser.CloseDevTools() 
    End If 
    If commandId1 = CopyUrlAddress Then 
     Clipboard.SetText(parameters.PageUrl) 
    End If 

    Return False 
End Function 

Public Sub OnContextMenuDismissed(browserControl As IWebBrowser, browser As IBrowser, frame As IFrame) Implements IContextMenuHandler.OnContextMenuDismissed 
End Sub 

Public Function RunContextMenu(browserControl As IWebBrowser, browser As IBrowser, frame As IFrame, parameters As IContextMenuParams, model As IMenuModel, callback As IRunContextMenuCallback) As Boolean Implements IContextMenuHandler.RunContextMenu 
    Return False 
End Function 
End Class 
Verwandte Themen