原文:C#引用CefSharp并屏蔽鼠标右键和禁止拖动放置事件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013564470/article/details/78339957

目录:


C#引用CefSharp

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

CEFSharp浏览器dll添加引用

using CefSharp;
using CefSharp.WinForms;

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文件,文件放在\项目名\bin\x86\Debug


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);
}

我们在其中的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);
}

之后运行,会发现已经屏蔽鼠标右键。


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<DraggableRegion> 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);
}

之后运行,会发现已经屏蔽鼠标右键和拖动放置事件。


C#引用CefSharp并屏蔽鼠标右键和禁止拖动放置事件的更多相关文章

  1. IE屏蔽鼠标右键、禁止复制粘贴等功能

    <body oncontextmenu="return false" onselectstart="return false" ondragstart=& ...

  2. 屏蔽鼠标右键功能JS

    <script language="Javascript">     function hiderightKey(){    return false; } docum ...

  3. 转:js小技巧 ,将彻底屏蔽鼠标右键,可用于Table ,取消选取、防止复制,IE地址栏前换成自己的图标

    1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键<table border oncontextmenu= ...

  4. Javascript屏蔽鼠标右键-超简单,不过还是记录一下

    Javascript屏蔽鼠标右键,其实作用也不大,也许是为了防止别人查看源代码,其实想查看源代码有多种途径,未必需要通过鼠标右键.不过当我们自定义鼠标右键弹出菜单时,也许需要这些. 下面是源码: 1 ...

  5. HTML,JS禁止鼠标右键、禁止全选、复制、粘贴的方法

    禁止鼠标右键.禁止全选.复制.粘贴: oncontextmenu事件禁用右键菜单: js代码: document.oncontextmenu = function(){ event.returnVal ...

  6. C# winform 屏蔽鼠标右键 spreadsheet Gear 屏蔽鼠标右键菜单

    今天用到spreadsheetGear 插件,然后右键有插件自己的菜单.都是英文的,而且还能打开新的窗体.嵌到程序里面,不太合适,所以着手屏蔽. 刚开始用的Mouse_up,虽然能捕获事件,但是没有K ...

  7. wpf 中AxShockwaveFlash重写以及屏蔽鼠标右键

    在wpf中需要用到flash播放swf或者图片,需要使用 AxShockwaveFlashObjects.dll和ShockwaveFlashObjects.dll 在项目中使用的时候遇到 问题1.使 ...

  8. html屏蔽鼠标右键

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. JS屏蔽鼠标右键

    //方法1: function stop() {    return false;}document.oncontextmenu = stop;//方法2: window.document.oncon ...

随机推荐

  1. CTR深度学习

    深度学习在 CTR 中应用 一. Wide&&Deep 模型 首先给出Wide && Deep [1] 网络结构: 本质上是线性模型(左边部分, Wide model) ...

  2. angular管道相关知识

    原文地址 https://www.jianshu.com/p/22e0f95bcf24 什么是管道 每个应用开始的时候差不多都是一些简单任务:获取数据.转换它们,然后把它们显示给用户. 获取数据可能简 ...

  3. JSON序列化自己主动过滤NULL值

    使用Newtonsoft.Json.dll 序列化为json时主动将NULL值过滤掉.详细做法: var jSetting = new JsonSerializerSettings {NullValu ...

  4. [Python学习] 简单爬取CSDN下载资源信息

    这是一篇Python爬取CSDN下载资源信息的样例,主要是通过urllib2获取CSDN某个人全部资源的资源URL.资源名称.下载次数.分数等信息.写这篇文章的原因是我想获取自己的资源全部的评论信息. ...

  5. [Compose] Isomorphisms and round trip data transformations

    What is Isomorphisms?We have a value x, then apply function 'to' and 'from' to value 'x', the result ...

  6. 移动端UI界面设计:APP字体排版设计的七个原则

    移动端UI界面设计:APP字体排版设计的七个原则 发布于: 2015 年 2 月 9 日 by admin 再来谈移动端APP字体排版设计,也许有人会说,这个还有什么好说的呢?但是真正能够运用好APP ...

  7. matlab 实现 stacked Autoencoder 解决图像分类问题

    Train Stacked Autoencoders for Image Classification 1. 加载数据到内存 [train_x, train_y] = digitTrainCellAr ...

  8. 【BZOJ 1008】[HNOI2008]越狱

    [题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1008 [题意] [题解] 相邻就会犯罪的话; 可以考虑它的反面; 即让所有相同信仰的人 ...

  9. Oracle数据库中的几个名字及监听的配置问题

    学习数据库的时候,由于数据库只建了一个库,而且只是本机访问,所以没有对listener.ora与tnsname.ora这两个文件进行过多设置,但是实际中要区分客户端与服务器端,相互之间的访问就存在微妙 ...

  10. css中背景 字体 文体属性练习

    @charset "utf-8"; body{ background-color:#332244;/*//背景颜色*/ background-image:("../kk. ...