我CefSharp.WinForms.ChromiumWebBrowser在我的项目中使用v45.当我右键单击Web浏览器时,将显示默认的上下文菜单:
但我不想展示任何东西.我该怎么办?
小智 30
这是像我这样懒惰的人的实现.它基于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;
}
}
Run Code Online (Sandbox Code Playgroud)
如何使用它
ChromiumWebBrowser browser = new ChromiumWebBrowser();
browser.MenuHandler = new CustomMenuHandler();
Run Code Online (Sandbox Code Playgroud)
小智 6
最简单的方法是设置事件 PreviewMouseRightButtonUp 和 PreviewMouseRightButtonDown 具有相同的功能 e.Handle = true。当您右键单击时,此解决方案不会显示 cefsharp 的上下文菜单。
XAML:
<wpf:ChromiumWebBrowser Grid.Row="1" x:Name="Browser" Margin="30,0" IsBrowserInitializedChanged="Browser_IsBrowserInitializedChanged" PreviewMouseRightButtonDown="Browser_PreviewMouseRightButton" PreviewMouseRightButtonUp="Browser_PreviewMouseRightButton"/>
Run Code Online (Sandbox Code Playgroud)
和功能:
private void Browser_PreviewMouseRightButton(object sender, MouseButtonEventArgs e)
{
e.Handled = true;
}
Run Code Online (Sandbox Code Playgroud)
如果你实现了,IContextMenuHandler你就可以控制ContextMenu. 下面的两个链接演示了所需的内容(以及一些其他有用的功能)。
一般来说,该CefSharp.WinForms.Example项目演示了相当多的功能,如果您需要其他功能,请检查一下。
| 归档时间: |
|
| 查看次数: |
8239 次 |
| 最近记录: |