繁体   English   中英

可以使用CEFSharp将URI显示给用户吗?

[英]Can the URI be displayed to the user using CEFSharp?

在Windows窗体应用程序(WinForms)中,我正在使用CEFSharp打开网页。 我想修改右键单击上下文,以允许用户显示已打开的URL。 当前,上下文具有“上一步”,“前进”,“打印...”和“查看源代码”

@amaitland的评论使事情一发不可收拾。 这是我的实现。 我希望这可以帮助其他人。

初始化WinForms.ChromiumWebBrowser的实例时,将其属性MenuHandler设置为IContextMenuHandler的实例。

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

您可以在IContextMenuHandler的实现中控制上下文菜单。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM