我的第一篇博文(Winfrom下WebBrowser控件的使用)

说实话来到博客园也得2年多了,可惜一片文章都没写过。只因今天心情很不好,决定趁工休时间写篇博文放松放松。文字真的是一件很神奇的东西,写出来了感觉心情会好很多。我现在有个想法就是把我总结的一些技术性的东西以后慢慢地放到博客园上来。

今天心情为什么心情不好呢,因为早晨我迟到了。这次迟到估计是我本月内第三次迟到了,好害怕公司通报啊。由于路上修路,今早得绕道。平时也就是20分钟的路程,今早居然用了40分钟。靠,为什么堵车啊,为什么总是在右转或者左转的时候那么堵。看红绿灯那么偏向直行的车,我真想踹门砸玻璃。我不停的催促着司机,快点吧,到50我们就开会了。可真到了无影山中路上,我绝望了,已经快8点了,足足迟到了快10分钟。我也不那么生气了,认命吧。我同事一路上很淡定,在后头给媳妇打了电话,默默地等待着迟到的到来。唉,以后一定要在铃声响了就起床,因为说不定就会遇到耽误行程的事情,要留出解决问题的时间。

好吧,现在真不烦恼了。第一篇文章不能就只是发牢骚,写点有用的东西吧。这段时间一直在弄winform和android,我打算在新年到来之前,一定要让自己的技术有所提升。对于android的学习,我准备分块进行,先实现一些手机中常用的功能。等对android熟悉了,再写一些自己想实现的好玩的东西。以后我会把实现的一个个小功能都在这园子里整理出来,也为以后复习用,说不定时间久了,这就是财富。

也没有准备今天到底写什么,就突然想起来了昨天弄的一个东西,WebBrowser控件的使用:

对于初学者的我来说,平时都没怎么接触过这个控件。最近想实现在winform中嵌套网页,从网页里显示出来列表数据。由于需要涉及到下载网页中的数据问题,所以得用到winform和webform之间的通信问题。从园子里搜索了好多,终于找到了个解决方法。

1.winform中访问webform中的元素,并添加事件

这个比较简单,举个例子:

webform中的内容:

1 <html>
2 <body>
3   <input id="btnDownload" type="button" value="下载并打开" />
4 </body>
5 </html>

winform中的内容:

由于winform访问WebBrowser控件中的内容,需要在WebBrowser控件中文档加载完后才可以。

所以需要在DocumentCompleted时间下编写调用代码(DocumentCompleted:在web浏览器控件中承载的文档全部加载后发生。)

 1 private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
 2 {
 3      HtmlDocument hd = webBrowser1.Document;//这句是获取WebBrowser控件中的文档对象
 4   hd.GetElementById("btnDownload").Click += new HtmlElementEventHandler(btnDownload_HtmlElementEvent);//这句就是为文档中的按钮添加click事件
 5 }
 6
 7 //这个是自定义的方法,就是click后要实现的功能
 8 void btnDownload_HtmlElementEvent(object sender, HtmlElementEventArgs e)
 9 {
10   MessageBox.Show("我现在不生气了");
11 }

其中:

hd.GetElementById是捕获元素的方法之一,在vs用点一下就出来,定位到方法名上后都一般能看到vs的智能提示,一般就明白该方法是干嘛用的了


园子里这位博主关于WebBrowser控件的使用介绍的很全,有时间的大家可以看看
http://www.cnblogs.com/peterzb/archive/2009/07/12/1521787.html

2.webform中访问winform中的方法

 1 <html>
 2 <body>
 3  <div id="dataList">
 4    <ul>
 5      <li><p onclick="window.external.showDetails(12178)">今天为什么迟到了啊,气死我了。</p></li>
 6
 7      <li><p onclick="window.external.showDetails(12306)">以后我决定响铃就起,不再拖沓。</p></li>
 8
 9    </ul>
10  </div>
11 </body>
12 </html>

winform中的内容:

 1 using System.Security.Permissions;
 2
 3 [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
 4 [System.Runtime.InteropServices.ComVisibleAttribute(true)]
 5 public partial class  Form1 : Form
 6 {
 7
 8        public Form1()
 9        {
10             InitializeComponent();
11             webBrowser1.ObjectForScripting = this;
12
13        }
14
15 }
16
17 //在winform中的自定义方法,WebBrowser控件中js需要调用的方法
18
19 public void showDetails(int infoid)
20 {
21   frmDetails fd = new frmDetails();
22   WebBrowser wb = (WebBrowser)fd.Controls["webBrowser1"];
23   wb.Navigate("###?id=" + infoid);
24   fd.ShowDialog();
25 }

我就不解释了,复制到vs下,鼠标放到代码,看智能提示,一看就明白是干嘛用的了。

时间: 2024-08-24 14:26:57

我的第一篇博文(Winfrom下WebBrowser控件的使用)的相关文章

WinFrom下WebBrowser控件的一些小技巧

1.获取WebBrowser控件中的内容 2.获取WebBrowser中网页的高度 3.在WebBrowser中循环滚动网页 4.延迟系统时间,但系统又能同时能执行其它任务 1 private void Delay(int Millisecond) 2 { 3 DateTime current = DateTime.Now; 4 while (current.AddMilliseconds(Millisecond) > DateTime.Now) 5 { 6 Application.DoEven

第一篇:初识ASP.NET控件开发_第三节:&ldquo;生死有序&rdquo;的控件生命周期

一.Page本质是一个Control 我们首先要澄清的第一个概念是页面类Page本质是一个控件类,它派生于TemplateControl类,而TemplateControl派生自Control类.既然饭我没有乱吃,自然话也不会乱讲.借田有良老师的翠花给大家上证据如下: 二.Control的"生死之序" 1.实例化(Instantiate) 我们写控件一般不要接触此活动. 2.初始化(Initialize) [初始化自己,创建它的子控件(但该过程控件的状态没有加载).触发该控件的OnIn

第一篇:初识ASP.NET控件开发_第二节:HelloWorld

1)步骤一:新建类库项目:Controls,创建新解决方案:CustomLibrary 2)步骤二:在类库项目中添加"ASP.NET服务器控件"新建项:RenderHelloWorld.cs (也可以是新建类) 3)步骤三:修改RenderHelloWorld.cs代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using Syst

第一篇:初识ASP.NET控件开发_第一节:控件类及其继承关系

1)System.Web.UI.Control(以下简称Control) Control 类是包括自定义控件.用户控件和页在内的所有 ASP.NET 服务器控件的基类..定义由所有 ASP.NET 服务器控件共享的属性.方法和事件. 命名空间:System.Web.UI程序集:System.Web(在 system.web.dll 中) 2)System.Web.UI.WebControls.WebControl(以下简称WebControl) WebControl 类是 System.Web.

2015元旦第一篇博文:Red5流媒体服务器搭建

今天是2015年的第一天,白天陪老婆孩子去BHG(华联)转了转,中午在九毛九吃了顿午饭,就这样过了元旦,虽然有点累,但是挺开心,北京今天的天气也比较给力,风和日丽,没有雾霾!现在是晚上十点,因为白天出去玩,老婆孩子有点累,现在已经熟睡,我不想就这样就结束2015的第一天,作为一个新的开始,我决定写2015年的第一篇博文.闲话少说,进入主题.流媒体这个概念在第一家公司就了解了,当时做一个Eleaning在线教育平台的时候,用Red5流媒体服务器技术,支持过视频模块的播放.下面就谈谈我对流媒体的认识

第一篇博文:为自己加油

为自己加油 第一次在51CTO发表博文,四个字形容我和51CTO的关系"相见恨晚",今年才正式的了解和加入,并开始在51CTO学院学习在线课程.起步有点晚,也没有关系,找对了方向,一切都不晚. 来点抒情的正能量的文字,鼓励下自己,继续学习的动力. 改变才能更好的生存,学习是改变的最佳途径! 还有我最喜欢的一句哈佛名言:Thought is already is late,exactly is the earliest time ! 和大家一起共勉. 2014年05月09日 晚 20点4

我的第一篇博文:输入法编程

这是我的第一篇博文,在这之前,我要介绍一下我自己.我是一名核电工程师,已经工作了19年,我同时也是一名计算机爱好者.我利用业余时间学习编程. 最近我研究了输入法的编程.我阅读了很多园里的文章,特别是借鉴了启程之星公开的客户端的源码.研究已经取得进展,可惜眼睛看坏了,现在不是很方便用计算机,所以等我眼睛好一些时候,我会更详细地介绍我研究的输入法的心得.我做的几件事如下: 1. 启程之星输入法源码的主要原理搞懂了.编译成功,知道主要部分的逻辑关系: 2. 研究了启程之星最近版与服务器通讯的原理(此部

这是我的第一篇博文,请大家多多关照!~

最近发现MDT推出去的系统的有不同问题,其问题就不说了,主要是策略权限被域继承了.比如我们手动安装的很多东东都是未配置壮态,推的就默认为安全壮态了,今天细找了一下,原来把这个关了就可以了. 这是我的第一篇博文,请大家多多关照!~,布布扣,bubuko.com

我的第一篇博文

看着很多朋友都开通了自己的博客,在博客里写写画画蛮有意思,自己也开博了,原来的科学网博客太八卦了,以后长居博客园了. 试着写个数学公式 我的第一篇博文,布布扣,bubuko.com