WebBrowser 类使用户可以在窗体中导航网页,它是一个Winfrom控件,命名空间是System.Windows.Forms。WPF中也有WebBrowser控件,但是与Winform里的相比较功能少很多。所以这里采用WPF加载Winform自定义WebBrower控件的方式,实现一个简单的加载网页并动态缩放的效果。
实现的效果如下:
1、首先添加 System.Windows.Forms.dll和WindowsFormsIntegration.dll程序集
2、新建MyWebBrowser.cs类继承System.Windows.Forms.WebBrowser
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace WebBrowserDemo
{
class MyWebBrowser : WebBrowser
{
#region enums
public enum OLECMDID
{
OLECMDID_OPTICAL_ZOOM = 63,
OLECMDID_OPTICAL_GETZOOMRANGE = 64,
}
public enum OLECMDEXECOPT
{
OLECMDEXECOPT_DONTPROMPTUSER,
}
public enum OLECMDF
{
OLECMDF_SUPPORTED = 1
}
#endregion
#region IWebBrowser
[ComImport, /*SuppressUnmanagedCodeSecurity,*/
TypeLibType(TypeLibTypeFlags.FOleAutomation |
TypeLibTypeFlags.FDual |
TypeLibTypeFlags.FHidden),
Guid("D30C1661-CDAF-11d0-8A3E-00C04FC9E26E")]
public interface IWebBrowser
{
[DispId(100)]
void GoBack();
[DispId(0x65)]
void GoForward();
[DispId(0x66)]
void GoHome();
[DispId(0x67)]
void GoSearch();
[DispId(0x68)]
void Navigate([In] string Url,
[In] ref object flags,
[In] ref object targetFrameName,
[In] ref object postData,
[In] ref object headers);
[DispId(-550)]
void Refresh();
[DispId(0x69)]
void Refresh2([In] ref object level);
[DispId(0x6a)]
void Stop();
[DispId(200)]
object Application
{
[return:
MarshalAs(UnmanagedType.IDispatch)]
get;
}
[DispId(0xc9)]
object Parent
{
[return:
MarshalAs(UnmanagedType.IDispatch)]