ChromiumWebBrowser에서 마우스 오른쪽 버튼 클릭 및 드래그 금지
5577 단어 C#마우스 오른쪽 버튼
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.