WPF webbrowser修改URL时,怎么不让它跳出新窗口
WPF webbrowser修改URL时,如何不让它跳出新窗口
WPF写的代码,程序启动,webbrowser中显示一个html1的内容,点击一个按钮后,想webbrowser中显示html2,在这个切换过程中会创建新的窗口,在WPF中如何解决啊?winform中好像有个什么New_Window的事件,WPF中如何解决?
------解决思路----------------------
谁知道你是怎样让它“显示html2”的?
------解决思路----------------------
using SHDocVw;
先去system32中添加shdoocvw.dll引用
winform中可以用NewWindow3,但WPF出于安全考虑,这个事件处理在源代码中其实是空的
Window_Load事件处理中,反射ActiveX插件来处理
------解决思路----------------------
就try-catch放到Load中就行
------解决思路----------------------
为避免多次反射,你可以将prop封装为一个静态单例属性
WPF写的代码,程序启动,webbrowser中显示一个html1的内容,点击一个按钮后,想webbrowser中显示html2,在这个切换过程中会创建新的窗口,在WPF中如何解决啊?winform中好像有个什么New_Window的事件,WPF中如何解决?
------解决思路----------------------
谁知道你是怎样让它“显示html2”的?
------解决思路----------------------
using SHDocVw;
先去system32中添加shdoocvw.dll引用
winform中可以用NewWindow3,但WPF出于安全考虑,这个事件处理在源代码中其实是空的
Window_Load事件处理中,反射ActiveX插件来处理
try
{
var prop = typeof(ActiveXHost).GetProperty("ActiveXInstance", BindingFlags.NonPublic
------解决思路----------------------
BindingFlags.Instance);
this._axWebBrowser = (SHDocVw.WebBrowser)prop.GetValue(this.webBrowser1, null);
if (this._axWebBrowser == null)
{
error = 获取浏览器ActiveX失败";
}
else
{
//屏蔽脚本错误弹窗
this._axWebBrowser.Silent = true;
//强制在控件中打开新窗口,WPF中的NewWindow3事件处理无效
//this._axWebBrowser.NewWindow3 += new SHDocVw.DWebBrowserEvents2_NewWindow3EventHandler(_axWebBrowser_NewWindow3);
//处理新窗口事件
SHDocVw.DWebBrowserEvents_Event wbEvents = (SHDocVw.DWebBrowserEvents_Event)this._axWebBrowser;
wbEvents.NewWindow += new SHDocVw.DWebBrowserEvents_NewWindowEventHandler(OnWebBrowserNewWindow);
}
}
catch (Exception exp)
{
error = exp.Message;
}
//浏览器新窗口事件强制在当前窗口中打开
private void OnWebBrowserNewWindow(string URL, int Flags, string TargetFrameName, ref object PostData, string Headers, ref bool Processed)
{
Processed = true;
this.webBrowser1.Navigate(URL);
}
------解决思路----------------------
就try-catch放到Load中就行
------解决思路----------------------
为避免多次反射,你可以将prop封装为一个静态单例属性