0
내 Windows 양식 응용 프로그램 (WinForms)에서 CEFSharp를 사용하여 웹 페이지를 엽니 다. 오른쪽 클릭 컨텍스트를 수정하여 사용자가 열었던 URL을 표시 할 수있게하려고합니다. 현재 컨텍스트에는 "뒤로", "앞으로", "인쇄 ..."및 "소스보기"가 있습니다.CEFSharp를 사용하여 URI를 사용자에게 표시 할 수 있습니까?
내 Windows 양식 응용 프로그램 (WinForms)에서 CEFSharp를 사용하여 웹 페이지를 엽니 다. 오른쪽 클릭 컨텍스트를 수정하여 사용자가 열었던 URL을 표시 할 수있게하려고합니다. 현재 컨텍스트에는 "뒤로", "앞으로", "인쇄 ..."및 "소스보기"가 있습니다.CEFSharp를 사용하여 URI를 사용자에게 표시 할 수 있습니까?
@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
당신은 http://cefsharp.github.io/api/55.0.0/html/T_CefSharp_IContextMenuHandler.htm CEF는 디버깅 지원을하고있다 – amaitland
를 사용하여 상황에 맞는 메뉴를 사용자 정의 할 수 있습니다! 이 대답은 내가 필요로하는 것을 충분히주었습니다. http://stackoverflow.com/a/31577099/139689 – MADCookie