1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/lunarsf-Lunar-Markdown-Editor

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
WebBrowserHelper.cs 2.1 КБ
Копировать Редактировать Исходные данные Просмотреть построчно История
LunarSF Отправлено 8 лет назад c8a621d
/*
* 此类来自于: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 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/lunarsf-Lunar-Markdown-Editor.git
git@gitlife.ru:oschina-mirror/lunarsf-Lunar-Markdown-Editor.git
oschina-mirror
lunarsf-Lunar-Markdown-Editor
lunarsf-Lunar-Markdown-Editor
v0.4-beta8