ChromiumWebBrowser에서 마우스 오른쪽 버튼 클릭 및 드래그 금지

C#은 C#의 디자인 인터페이스에서 CefSharp를 참조하고 패널 컨트롤을 추가하여 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 파일 참조, 파일은\프로젝트 이름\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 AddressChanged;
public event EventHandler StatusMessage;
public event EventHandler ConsoleMessage;
public event EventHandler LoadingStateChanged;
public event EventHandler FrameLoadEnd;
public event EventHandler FrameLoadStart;
public event EventHandler LoadError;
public event EventHandler IsBrowserInitializedChanged;
public event EventHandler 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 IContext MenuHandler 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# 코드 추가 차단 드래그 배치 이벤트 차단 드래그 배치 이벤트는 차단 마우스 오른쪽 버튼과 유사합니다.공인 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); }
나중에 실행하면 마우스 오른쪽 단추와 드래그 배치 이벤트가 차단되어 있습니다.
텍스트:https://blog.csdn.net/u013564470/article/details/78339957

좋은 웹페이지 즐겨찾기