C# 下控制 WebBrower 以及 HtmlDocument

c#winform中完美代替WebBrowser最新的控件geckofx33支持flash例子demo c#winform中完美代替WebBrowser最新的控件geckofx33支持flash例子demo 经历了webbrowser 内存溢出 排版错误等各种问题 终于找到了一个解脱模式,就是使用firefox内核的现阶段代替webbrowser最好的控件了。 例子中包含了运行库 控件 代码调用演示 拿去可直接嵌入到你的工作项目中,vs2015up1调试通过,.net4框架 立即下载

C# 下带有 WebBrowser 控件,可以用 html 来完成图文混排,报表显示和打印,比前面提供的 vc++ 下使用 IHTMLDocument 容易很多。

 

下面是一个可以本地生成 html 文件的class:

 

              public CHtmlDocumentBase(WebBrowser browser, int bufferSize)

              {

                     m_Browser = browser;

                     m_Block = new StringBuilder(bufferSize);      //64K

                     m_Block.Length = 0;

              }

 

              public void BeginHtml(string title, string style)

              {

                     AppendLine("<html><head><title>" + title + "</title>");

                     AppendLine(style);

                     AppendLine("</head>");

                     AppendLine(@"<body bottomMargin=4 leftMargin=4 topMargin=4 rightMargin=1>");

              }

 

              public void Append(string text)

              {

                     m_Block.Append(text);

              }

 

              public void AppendTag(string tag, string text)

              {

                     m_Block.Append("<");

                     m_Block.Append(tag);

                     m_Block.Append(">");

                     m_Block.Append(text);

                     m_Block.Append("</");

                     m_Block.Append(tag);

                     m_Block.AppendLine(">");

              }

 

              public void AppendTag(string tag, string tag1, string text)

              {

                     m_Block.Append("<");

                     m_Block.Append(tag);

                     m_Block.Append(" " + tag1);

                     m_Block.Append(">");

                     m_Block.Append(text);

                     m_Block.Append("</");

                     m_Block.Append(tag);

                     m_Block.AppendLine(">");

              }

 

              public void AppendLine(string text)

              {

                     m_Block.AppendLine(text);

              }

 

              public void EndHtml()

              {

                     AppendLine("</body>");

                     AppendLine("</html>");

                     if (m_Browser != null) {

                            m_Browser.DocumentText = m_Block.ToString();

                            m_Block.Length = 0;

                     }

              }

 

              public void AssociateWithBrowser(WebBrowser browser)

              {

                     m_Browser = browser;

                     if (m_Browser != null) {

                            m_Browser.DocumentText = m_Block.ToString();

                            while (m_Browser.ReadyState != WebBrowserReadyState.Complete)

                                   Application.DoEvents();

                     }

              }

 

              public string GetDocumentString()

              {

                     return m_Block.ToString();

              }

 

              public void PrintPreview()

              {

                     m_Browser.Document.ExecCommand("Print", true, null);

              }

 

 

至于控制 htmlDocument, C# 下提供的功能有限,无法像 VC++下无所不能。不过如果在reference 中添加一个 Microsoft HTML Object Library, 则可以做到复杂的控制。比如下面一个例子,click 一个 DIV 的联接,控制这个 DIV 的折叠与展开。

 

      using mshtml;

 

        browser.Navigating += browser_Navigating;

 

 

        private void browser_Navigating(object sender, WebBrowserNavigatingEventArgs e)

        {

            if (browser.Document == null) return;

          

            string s = e.Url.Segments[e.Url.Segments.Length -1];

            HtmlElement he = browser.Document.GetElementById(s);

            if (he != null) {

                HTMLDivElement div = (HTMLDivElement) he.DomElement;

                div.style.display = div.style.display == "none" ? "block" : "none";

            }

             e.Cancel = true;

        }

    }

 

 

DIV 标记如下:

 

       <DIV class="DT">

              <A href="Definition1">Definition Time</A>

       </DIV>

       <DIV id="Definition1">

              <DIV class="D1">Pickup:</DIV>

              <DIV class="D2">120</DIV>

              <DIV class="D1">Delay:</DIV>

              <DIV class="D2">30</DIV>

       </DIV>

 

WebBrowser控件(delphi) WebBrowser控件,Embedded.Web.Browser 立即下载

相关推荐

MSHTML.rar_MSHTML_VC Html_mshtml c++_mshtml vc_site:www.pudn.co

VC HTML操作教程。需要操作IE控件或其它功能,可以看看。

HtmlDocument 类 使用

HtmlDocument 类  注意:此类在 .NET Framework 2.0 版中是新增的。 提供对 WebBrowser 控件承载的 HTML 文档的顶级编程访问。 命名空间:System.Windows.Forms程序集:System.Windows.Forms(在 system.windows.forms.dll 中) var ExpCollDivS

wooley的专栏 2万+

华为S5700三层交换机VLAN配置避坑指南:为什么你的VLAN间无法互通?

本文针对华为S5700三层交换机VLAN间无法互通的典型故障,提供深度排障指南。文章从数据转发原理入手,系统梳理了从物理链路、VLAN配置、VLANIF接口状态、路由表到ARP表、MTU及安全策略等全链路检查点,并给出了清晰的排查命令与流程,帮助网络工程师快速定位并解决VLAN间路由问题,实现稳定互通。

tt34567的博客 873

document创建一段html代码,如何使用.NET的WebBrowser或mshtml.HTMLDocument动态生成HTML代码?...

我想为阿列克谢的回答贡献一些代码。几点:严格地说,可能无法始终确定页面何时以100%的概率完成渲染。有些页面非常复杂,并且使用连续的AJAX更新。但是我们可以通过轮询页面的当前HTML快照以获取更改并检查WebBrowser.IsBusy属性来完全接近。这就是LoadDynamicPage下面的内容。如果页面呈现永无止境(注意CancellationTokenSource),则必须在上面提供一些...

weixin_33252909的博客 399

香橙派5上跑DeepSeek-R1的避坑指南:从模型下载到NPU加速全流程解析

本文详细解析了在香橙派5(RK3588)上部署DeepSeek-R1蒸馏模型的完整流程与优化技巧。内容涵盖从系统配置、RKLLM工具链编译、模型转换到NPU加速调优的全过程,重点分享了如何利用RK3588的NPU算力实现高效推理,并提供了常见问题的解决方案,为边缘设备部署LLM提供了实用指南。

CAT789的专栏 717

基于虚拟阻抗重塑的构网型VSG变流器SISO序阻抗建模与宽频振荡抑制策略分析(面向高比例新能源并网场景)

本文深入探讨了基于虚拟阻抗控制的构网型VSG变流器SISO序阻抗建模技术及其在高比例新能源并网场景中的宽频振荡抑制策略。通过虚拟阻抗重塑,有效改善了变流器的阻抗特性,解决了次/超同步频段的振荡问题,并提供了参数设计、阻抗扫频验证等实用技巧,为新能源并网系统的稳定性提供了可靠解决方案。

weixin_29268385的博客 251

c# webBrowser中操作网页元素全攻略

c# webBrowser中操作网页元素全攻略

.NET 人工智能实践 4343

别再手动搬数据了!用rclone一键同步MinIO到华为云OBS的保姆级教程

本文详细介绍了如何使用rclone工具实现MinIO到华为云OBS的数据迁移,包括环境准备、双端配置、迁移前验证、实战迁移及后期监控等步骤。通过rclone的增量同步、断点续传等功能,确保数据迁移高效安全,特别适合需要跨云存储迁移的用户。

weixin_30839881的博客 523

C#中的WebBrowser控件的使用

关键字:C# WebBrowser 作者:txw1958 原文:http://www.cnblogs.com/txw1958/archive/2012/09/24/CSharp-WebBrowser.html   0、常用方法 Navigate(string urlString):浏览urlString表示的网址 Navigate(System.Uri url):浏览url表示的网...

weixin_34240657的博客 516

Stm32L0 STM32CUBE中UART和使用LPUART1以及串口不进中断问题解决

/* 开启串口1中断 */ LL_USART_EnableIT_RXNE(LPUART1); /* 开启串口2中断 */ LL_USART_EnableIT_RXNE(USART2);

シ❤゛甜虾的个人博客 7687

【专栏目录】

🌟 深度学习工程师的终极武器库!本专栏深度解析近3年CV领域最前沿的YoloV8改进方案,每一种方法都经过实战验证,性能显著提升!🌟。

m0_47867638的博客 1万+

C# WebBrowser控件详解

作者:827969653  0、常用方法Navigate(string urlString):浏览urlString表示的网址Navigate(System.Uri url):浏览url表示的网址Navigate(string urlString, string targetFrameName, byte[] postData, string additionalHeaders): 浏览urlSt...

宜臶瑏芯的博客 1427

Kafka 入门篇(一)

初识 Kafka 什么是 Kafka Kafka 的基本术语 Kafka 的特性(设计原则) Kafka 的使用场景 Kafka 的消息队列 点对点模式的消息队列 发布-订阅模式的消息队列 Kafka 系统架构 核心 API Kafka 为何如此之快 broker 端配置 broker.id port zookeeper.connect log.dirs num.recovery.threads.per.data.dir auto.create.topics.enable topic默认配置 num.par

1234

C#控制浏览器自动填充表单的代码

将内容过程比较常用的一些内容段备份一下,如下的资料是关于C#控制浏览器自动填充表单的内容。 HtmlDocument doc = webBrowser1.Document; HtmlElement el = doc.GetElementById(“下拉列表框的ID”); el = null; doc = null; ...

weixin_44204693的博客 647

Unity之如何实现哔哩哔哩直播弹幕游戏

什么是直播间互动?当我们使用哔哩哔哩进行直播或者观看视频时,我们可以通过接入哔哩哔哩提供的 直播&互动玩法SDK,让直播和视频可以与Unity3D游戏客户端或者游戏服务器进行互动。

TxNet 1543

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

c#读取html文件节点,C# 通过 HtmlDocument 操作HTML节点

C# 通过 HtmlDocument 操作HTML节点时,会发生不停地刷新的情况,在对html文档操作后加以判断即可解决这种问题。Public Sub setMainUlr(ByVal WebBrowser1 As WebBrowser)Dim pElem As HtmlElement = Nothing'即时信息页面pElem = WebBrowser1.Document.All("myFram...

weixin_36083698的博客 2173

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C#页面抓取信息

//根据Url地址得到网页的html源码 private string GetWebContent(string Url) { string strResult=""; try { HttpWebRequest request = (H...

weixin_30868855的博客 84

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

c#web页面显示弹窗_VS C# .NET WebBrowser控件 利用插入JS代码,实现控制弹出IE窗口...

最近在做一个客户端程序,使用到自带的WebBrowser控件时,发现当JS调用window.open()或a标签的target="_blank"时使用的是弹出IE窗口,不知道为什么是这种设计,根本不满足需求嘛。上网查了一下相关资料,发现这个控件并没有属性能控制这个功能,于是找第三方控件,发现也还是不行(可能是我不够仔细尝试),而且要多出个几十兆的DLL。经过我几个小时的努力,放弃了。。。!知道C#...

weixin_42220853的博客 488

WYTC-C#控制項-WebBrowser

 WebBrowser(網頁瀏覽器) 控制項常用屬性:AllowNavigation 在載入初始網頁後,設定是否可以瀏覽其它網頁Document 獲取Document,用來表示目前陳在WebBrowser控制項中的網頁的原始檔內容DocumentText 用來獲取或設定目前WebBrowser中所顯示網頁原碼。通常是將HTML內容指定給此屬性來顯示自頂訂的網頁內容.DocumentTitle 用來

WYTC 1289

winfrom 控制 webbroser 滚动条位置

//获取滚动条位置 HtmlDocument document = webBrowser1.Document; string top = document.GetElementsByTagName("HTML")[0].ScrollTop.ToString(); string left = document.GetElementsByTagName("HTML")[0].ScrollLeft

每天进步一点点 3586

爬虫技术 -- 进阶学习(九)使用HtmlAgilityPack获取页面链接(附c#代码及插件下载)...

菜鸟HtmlAgilityPack初体验。。。弱弱的代码。。。 Html Agility Pack是一个开源项目,为网页提供了标准的DOM API和XPath导航。使用WebBrowser和HttpWebRequest下载的网页可以用Html Agility Pack来解析。 HtmlAgilityPack的文档是CHM格式的,有时会无法正常阅读CHM格式的文件。如果是IE不能链接到...

aijie6150的博客 268

.NET Compact Framework通过托管Win32代码获得HtmlDocument

问题引入: 有过CF的项目经验的朋友一定常常遇到与BS后台对接的问题,HTML在BS系统中有着得天独厚的条件,他能够直接被用作界面显示,并且能够被C#代码和Javascript操作,因此在一些应用中BS系统可能采取在数据库中存储HTML表单的设计,例如一些表单可视化设计控件(Table Designer)生成的就是HTML,直接存储HTML的好处在于绕过了解析HT...

weixin_30444105的博客 123

HTML按钮控制C#程序截图并查看

在上一篇博客中http://blog.youkuaiyun.com/qq_30507287/article/details/51746893,描述了如何利用窗体界面的按钮来控制截图的功能的实现。本次博客描述的是如何利用HTML中的按钮来控制C#后台程序的运行来实现截图。     (1)首先在HTML中创建两个type=“button”的按钮,其多创建如下:                        

崔洪振367 534

Webbrowser知识点记录(c#研发)

本文主要是讲解webBrowse中的跨域问题及click事件控制跳转页面问题的处理方法。

u013930797的博客 585

C#:用WebBrowser获取JS动态加载以后的页面代码并保存图片

很多网页的内容包括图片是用JS或Jquery动态加载的,用Webbrowser直接获得的源码是没有参考价值的,而JS加载后含所有element的代码很难获取的,起码笔者搜索了一圈下来看到的方法都几乎没有使用价值。 笔者这里分享一种解决方案,随便找个网页会动态加载内容的,不难发现需要加载的内容需要你滚动页面,视野范围内的内容就会动态加载,于是乎,办法就来了。 首先,你还必须先研究一下你需要抓取的

Eshine的博客 8090
上一篇: C# 下用 xml 导入导出数据
下一篇: 动态可订制属性的 PropertyGrid
Akron
博客等级 码龄20年 28粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值