关于WinForm内嵌网页的方案分享

1 篇文章 0 订阅
1 篇文章 0 订阅

WinForm本是一门很早的技术(目前仍然实用),似乎是2005年伴随.NET2.0一起出现的。随后出现的WPF、ADO.NET等相关技术也很多很多,但WinForm依然屹立。
那为什么要在WinForm内嵌网页呢?在开发一些绚丽的界面效果时,HTML会更加便捷、强大。

直接奔入主题吧,如何在WinForm中显示网页呢?

1、将WebBrowser控件拖入到主窗体中。
2、在控件的url属性中输入目标地址,如www.baidu.com。此时F5启动。即可看到百度的首页了。
3、接下来就需要调整一些属性、来让这次网页嵌入看起来更完善些
- WebBrowserShortcutsEnabled 是否启用某些快捷键,例如“F5”刷新
- ScrollBarsEnabled 是否应该有滚动条
- Locked 是否可以移动控件或调整控件的大小
- AllowWebBrowserDrop 是否打开托放在其上的文件
- IsWebBrowserContextMenuEnabled 是否关闭右键快捷菜单
- ScriptErrorsSuppressed 设为true,防止控件显示网页脚本代码的错误信息
4、网页和客户端的双向通信(如果你想在WinForm中展示自己的网站
-网页调用客户端的代码
1. 在窗体构造函数或Load事件处理程序中设置ObjectForScripting属性(下面代码将窗体类自身用于脚本对象)

 public Form1()
        {
            InitializeComponent();
            webBrowser1.ObjectForScripting = this;
        }

2、在类的前面加入 [System.Runtime.InteropServices.ComVisible(true)]

 [System.Runtime.InteropServices.ComVisible(true)]
    public partial class Form1 : Form
    {
    }

3、编写客户端中的代码

public void InvokeFormMethod(string message)
        {
            MessageBox.Show(message,"WinForm控件");
        }

4、在网页里调用

<input type="button" value="调用winform的方法" onclick="window.external.InvokeFormMethod('Called WinForm Code')" >

客户端调用网页里的函数
1、在网页内编写函数

<script>
		function msgalert(msg)
			{
			   alert(msg);
			}
</script>

2、客户端调用网页中的函数

 private void button1_Click(object sender, EventArgs e)
        {
            webBrowser1.Document.InvokeScript("msgalert", new string[] { "Called Javascript code" });
        }

其他的一些琐碎知识点

打开新页面时如何防止弹出默认浏览器呢?

调用WebBrowser的NewWindow事件。在准备弹出新页面时,取消弹出并用当前的WebBrowser打开新页面

private void webBrowser1_NewWindow(object sender, CancelEventArgs e)
        {
            e.Cancel = true;
            webBrowser1.Navigate(webBrowser1.StatusText);
        }
如何你想在自己的网页中播放视频,但是无法正常播放时。试着升级下IE版本(WebBrowser默认使用的是IE7.0),在网页中的head/title标签中加入
<META http-equiv="X-UA-Compatible" content="IE=9" > </META>

尚未解决的问题,忘路过的大佬们指点一二…:)

我在用自己的WinForm程序访问CSDN时,进入主页没有问题。但是点击访问其他人的博客时,会弹出窗口提示“堆栈溢出,位置:第三行”,然后页面无法打开。如下图
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值