Слияние кода завершено, страница обновится автоматически
/*
* 此类来自于:http://www.pin5i.com/showtopic-wpf-webbrowser-pop-event.html
* 用于阻止 WPF WebBrowser 在访问网页时弹出 IE 窗口。
* 我的目标是让 WebBrowser 自身打开相关链接指向的网页。
* */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Windows.Controls;
using System.Globalization;
using System.Windows;
using System.Windows.Threading;
namespace LunarSF.SHomeWorkshop.LunarMarkdownEditor.CustomWebBrowser
{
public partial class WebBrowserHelper
{
private WebBrowser _webBrowser;
private object _cookie;
public event CancelEventHandler NewWindow;
public WebBrowserHelper(WebBrowser webBrowser)
{
if (webBrowser == null)
throw new ArgumentNullException("webBrowser");
_webBrowser = webBrowser;
_webBrowser.Dispatcher.BeginInvoke(new Action(Attach), DispatcherPriority.Loaded);
}
public void Disconnect()
{
if (_cookie != null)
{
_cookie.ReflectInvokeMethod("Disconnect", new Type[] { }, null);
_cookie = null;
}
}
private void Attach()
{
var axIWebBrowser2 = _webBrowser.ReflectGetProperty("AxIWebBrowser2");
var webBrowserEvent = new WebBrowserEvent(this);
var cookieType = typeof(WebBrowser).Assembly.GetType("MS.Internal.Controls.ConnectionPointCookie");
_cookie = Activator.CreateInstance(
cookieType,
ReflectionService.BindingFlags,
null,
new[] { axIWebBrowser2, webBrowserEvent, typeof(DWebBrowserEvents2) },
CultureInfo.CurrentUICulture);
}
private void OnNewWindow(ref bool cancel)
{
var eventArgs = new CancelEventArgs(cancel);
if (NewWindow != null)
{
NewWindow(_webBrowser, eventArgs);
cancel = eventArgs.Cancel;
}
}
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )