zoukankan      html  css  js  c++  java
  • ChromiumWebBrowser禁止鼠标右键和拖动

    C#引用CefSharp
    在C#的设计界面,添加panel控件用来放置CEFSharp浏览器。
    CEFSharp浏览器dll添加引用

    using CefSharp;
    using CefSharp.WinForms;
    1
    2
    CEFSharp浏览器初始化代码:

    public Form1()
    {
    InitializeComponent();
    InitBrowser();
    }
    public ChromiumWebBrowser browser;
    public void InitBrowser()
    {
    Cef.Initialize(new CefSettings());
    browser = new ChromiumWebBrowser(“http://my.csdn.net/u013564470”);
    browser.Dock = DockStyle.Fill;
    panel1.Controls.Add(browser);
    }

    上述完成之后就可以运行了!
    注意事项:平台选择X86,右侧解决方案中引用DLL文件,文件放在项目名inx86Debug

    C#添加代码屏蔽鼠标右键
    在屏蔽之前先查看namespace CefSharp.WinForms内的代码

    public class ChromiumWebBrowser : Control, IWebBrowserInternal, IWinFormsWebBrowser, IWebBrowser, IDisposable
    {
    public ChromiumWebBrowser(string address);

    public IDownloadHandler DownloadHandler { get; set; }
    public ILoadHandler LoadHandler { get; set; }
    public IDisplayHandler DisplayHandler { get; set; }
    public IContextMenuHandler MenuHandler { get; set; }
    public IRenderProcessMessageHandler RenderProcessMessageHandler { get; set; }
    public IFindHandler FindHandler { get; set; }
    public IRequestHandler RequestHandler { get; set; }
    public IFocusHandler FocusHandler { get; set; }
    public IResourceHandlerFactory ResourceHandlerFactory { get; set; }
    public IGeolocationHandler GeolocationHandler { get; set; }
    public bool CanGoForward { get; }
    public bool CanGoBack { get; }
    public bool IsBrowserInitialized { get; }
    public override bool Focused { get; }
    public IDragHandler DragHandler { get; set; }
    public IKeyboardHandler KeyboardHandler { get; set; }
    public ILifeSpanHandler LifeSpanHandler { get; set; }
    public IDialogHandler DialogHandler { get; set; }
    public string Address { get; }
    public string TooltipText { get; }
    public bool IsLoading { get; }
    public RequestContext RequestContext { get; set; }
    public BrowserSettings BrowserSettings { get; set; }
    public bool IsActivating { get; set; }
    public IJsDialogHandler JsDialogHandler { get; set; }

    public event EventHandler<AddressChangedEventArgs> AddressChanged;
    public event EventHandler<StatusMessageEventArgs> StatusMessage;
    public event EventHandler<ConsoleMessageEventArgs> ConsoleMessage;
    public event EventHandler<LoadingStateChangedEventArgs> LoadingStateChanged;
    public event EventHandler<FrameLoadEndEventArgs> FrameLoadEnd;
    public event EventHandler<FrameLoadStartEventArgs> FrameLoadStart;
    public event EventHandler<LoadErrorEventArgs> LoadError;
    public event EventHandler<IsBrowserInitializedChangedEventArgs> IsBrowserInitializedChanged;
    public event EventHandler<TitleChangedEventArgs> TitleChanged;

    public IBrowser GetBrowser();
    public void Load(string url);
    public void RegisterAsyncJsObject(string name, object objectToBind, bool camelCaseJavascriptNames = true);
    public void RegisterJsObject(string name, object objectToBind, bool camelCaseJavascriptNames = true);
    protected override void Dispose(bool disposing);
    protected override void OnGotFocus(EventArgs e);
    protected override void OnHandleCreated(EventArgs e);
    protected override void OnSizeChanged(EventArgs e);
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    }

    我们在其中的public IContextMenuHandler MenuHandler { get; set; }接口中更改鼠标右键事件。
    方法为继承该类接口,并重写。实现方式如下:

    public class MenuHandler : 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;
    }
    }

    定义完之后在CEFSharp代码初始化中引用。如下:

    public ChromiumWebBrowser browser;
    public void InitBrowser()
    {
    Cef.Initialize(new CefSettings());
    browser = new ChromiumWebBrowser(“http://my.csdn.net/u013564470”);
    browser.MenuHandler = new MenuHandler();
    browser.Dock = DockStyle.Fill;
    panel1.Controls.Add(browser);
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    之后运行,会发现已经屏蔽鼠标右键。

    C#添加代码屏蔽拖动放置事件
    屏蔽拖动放置事件和屏蔽鼠标右键类似。我们在其中的public IDragHandler DragHandler { get; set; }接口中更改拖动放置事件。
    方法为继承该类接口,并重写。实现方式如下:

    public class DragHandler : IDragHandler
    {
    public bool OnDragEnter(IWebBrowser browserControl, IBrowser browser, IDragData dragData, DragOperationsMask mask)
    {
    return true;// false;//throw new NotImplementedException();
    }
    public void OnDraggableRegionsChanged(IWebBrowser browserControl, IBrowser browser, IList regions)
    {
    //throw new NotImplementedException();
    }
    }

    return true;为禁止。定义完之后在CEFSharp代码初始化中引用。如下:

    public ChromiumWebBrowser browser;
    public void InitBrowser()
    {
    Cef.Initialize(new CefSettings());
    browser = new ChromiumWebBrowser(“http://my.csdn.net/u013564470”);
    browser.MenuHandler = new MenuHandler();
    browser.DragHandler = new DragHandler();
    browser.Dock = DockStyle.Fill;
    panel1.Controls.Add(browser);
    }

  • 相关阅读:
    MySQL数据库的完全备份与恢复
    MySQL数据库之索引、事务、存储引擎详细讲解
    LNMP架构介绍与部署
    Haproxy搭建Web集群
    LAMP环境之MySQL服务安装详细过程
    MySQL主从复制详解
    LAMP环境之编译安装httpd服务
    搭建yum软件仓库,让你维护轻松自如
    Shell脚本一键安装Samba服务
    Shell脚本之冒泡排序
  • 原文地址:https://www.cnblogs.com/ly570/p/10992448.html
Copyright © 2011-2022 走看看