前言 在 Window Form 應用程式如果需要瀏覽網頁時可以崁入 WebBrowser 控制項,但如果需要操作崁入的 HTML 的網頁元素,就需要額外的操作,以下紀錄幾種操作 HTML 元素的方法以及會碰到的問題. 建立 WinForm 應用程式 首先先建立一個 Window Form 應用程式,在 Form1 表單上拉入一個 Button 與 WebBrowser 控制項,如下 在 Button1 事件中使用 WebBrowser.Navigate 方法載入指定的網頁,如下 1 priva…
前言 在 Window Form 应用程序如果需要浏览网页时可以崁入 WebBrowser 控件,但如果需要操作崁入的 HTML 的网页元素,就需要额外的操作,以下纪录几种操作 HTML 元素的方法以及会碰到的问题. 建立 WinForm 应用程序 首先先建立一个 Window Form 应用程序,在 Form1 窗体上拉入一个 Button 与 WebBrowser 控件,如下   在 Button1 事件中使用 WebBrowser.Navigate 方法加载指定的网页,如下 1.priva…
Ubuntu的复制粘贴操作 终端最大化快捷键:crtl + win + 上 1.最为简单,最为常用的应该是鼠标右键操作了,可以选中文件,字符等,右键鼠标,复制,到目的地右键鼠标,粘贴就结束了. 2.快捷键.一般通用的是Ctrl+C与Ctrl+V.不过通用也是有限制的,一般的程序下是没有问题,遇到终端就不行了.其实终端下默认的是 Ctrl+Shift+C,Ctrl+Shift+V,可以自己在编辑项下面自己设置为常用的. 3.文件操作可以使用鼠标拖拽.按住Ctrl,拖动文件就是. 4.文字复制与粘贴…
//http://www.cnblogs.com/cgli/archive/2011/04/09/2010497.html System.Net.ServicePointManager.Expect100Continue = false; string param = "u=账号&p=密码";//分别是用户名框的id和密码的id byte[] bs = Encoding.ASCII.GetBytes(param); HttpWebRequest req = (HttpWebRe…
刚学c#不久,也不太懂什么IHTMLDocument.IHTMLDocument2.IWebBrowser2等等.自己琢磨了好久,终于知道了怎么用WebBrowser操作frame和iframe. 1.获取frame的源文件 MessageBox.Show(webBrowser1.Document.Window.Frames["main"].Document.Body.InnerHtml); 2.获取frame的HTMLDocument接口 HTMLDocument doc =(HTM…
原文:.Net2.0 --Winform结合WebBrowser控件和Socket老技术来实现另类Push~ 目前的企业级开发比较流行的是Web2.0技术,但是由于Web技术基于请求--响应的交互模式,使很多效果无法有效的呈现.  比如在Push技术上面,很多人感到头痛~ 如何让服务器主动请求Browser端~ 这个技术很多技术普通的开发人员都感到很难解决(包括我~呵呵)     其实要在企业级开发中实现Push技术,难度是有,但是我们要懂得变换方式. 如果技术上一直卡在Push技术的研究上,很…
原文:C# winform调用WebBrowser经典怪问题总结 最近一直研究网页数据采集,单单采集数据,其实HtmlAgilityPack就足够了. 对HtmlAgilityPack感兴趣的可以到这里看看:C#采集代理服务器ip并设置IE代理--HtmlAgilityPack实战代码但是有个问题:要是想要模拟人工输入数据,进行表单提交HtmlAgilityPack就办不了,Skybound.Gecko(firfox的.net开源代码) 也办不了这个事情.Skybound.Gecko不支持点击,…
从winform访问webBrowser,大致就是利用webBrowser提供的解析dom的方法以及用InvokeScript方法执行javascript.这个相对比较简单. 从webBrowser访问winform,归纳出来大致4种办法: 1.利用webBrowser的Navigating事件 网页里的javascript代码: window.location.href='close'; winform里的代码: private void webBrowser1_Navigating(obje…
最近由于工作需要,研究了下Winform的WebBrowser控件,在这里给大家分享下. 1.WebBrowser导航 WebBrowser在进行导航的时候需要用到Navigate(string urlString)方法 2.执行已有的JavaScript函数 使用WebBrowser.Document.InovkeScript(string scriptName) 3.执行自定义的Javascript函数 这里需要先将自定义的Javascript写入到WebBrowser.Document.B…
刚学c#不久,也不太懂什么IHTMLDocument.IHTMLDocument2.IWebBrowser2等等.自己琢磨了好久,终于知道了怎么用WebBrowser操作frame和iframe. 1.获取frame的源文件 MessageBox.Show(webBrowser1.Document.Window.Frames["main"].Document.Body.InnerHtml); 2.获取frame的HTMLDocument接口 HTMLDocument doc = (HT…
Winform跨窗体操作控件是winform开发中很常见的形式,最常见且简单有效的方式便是使用委托的方式来进行操作,下面我将通过一个小实例来说明如何使用委托跨窗体实现控件操作. 实例介绍:两个窗体,Form1按钮打开Form2,然后在Form2的TextBox输入值在Form1的TextBox中显示出来. 一.项目结构 Form1窗体设计: Form2窗体设计: 二.代码实现 在Form2的代码中声明一个委托(写在Form2类外)-> public delegate void ChangeFor…
Winform 通过 WebBrowser 与 JS 交互 魏刘宏 2019.08.17 之前在使用 Cef (可在 Winform 或 WPF 程序中嵌入 Chrome 内核的网页浏览器的组件)时,使用过在 C# 代码中调用网页 JS 的功能,以为是 Cef 独有的,最近工作中得知,原来 Winform 自带的浏览器控件 WebBrowser 中也有这个功能,那么我们就来看看吧. 我们先建一个 Winform 窗体 FormBrowserJs: 其中左侧是一个 WebBrowser 控件,右边…
1.主要用途:使用户可以在窗体中导航网页. 2.注意:WebBrowser 控件会占用大量资源.使用完该控件后一定要调用 Dispose 方法,以便确保及时释放所有资源.必须在附加事件的同一线程上调用 Dispose 方法,该线程应始终是消息或用户界面 (UI) 线程. 3.WebBrowser 使用下面的成员可以将控件导航到特定 URL.在导航历史记录列表中向后和向前移动,还可以加载当前用户的主页和搜索页: 1.URL属性:可读.可写,用于获取或设置当前文档的 URL. WebBrowser …
C# WinForm WebBrowser (一) MSDN资料 1.主要用途:使用户可以在窗体中导航网页. 2.注意:WebBrowser 控件会占用大量资源.使用完该控件后一定要调用 Dispose 方法,以便确保及时释放所有资源.必须在附加事件的同一线程上调用 Dispose 方法,该线程应始终是消息或用户界面 (UI) 线程. 3.WebBrowser 使用下面的成员可以将控件导航到特定 URL.在导航历史记录列表中向后和向前移动,还可以加载当前用户的主页和搜索页: 1.URL属性:可读…
datagridview显示行号的2种方法: 方法一: 网上最常见的做法是用DataGridView的RowPostPaint事件在RowHeaderCell中绘制行号: privatevoiddataGridView1_RowPostPaint(objectsender, DataGridViewRowPostPaintEventArgs e) { try { e.Graphics.DrawString((e.RowIndex + ).ToString(), e.InheritedRowSty…
目录 概述 取消跨线程检查 使用委托异步调用 sync和await 总结 概述 最近在qq群里有一朋友,问起在winform中怎么通过开启线程的方式去处理耗时的操作,比如,查看某个目录下所有的文件,或者符合要求的文件.下班回来,也研究了一下.发现多线程这块有点薄弱,也算是补一补吧. 在winform开发,经常会遇到需要在控件上加载大量数据(也就是常说的耗时操作),这会导致程序出现假死状态,这个时候我们就会想到线程. 在智能客户端应用程序中,这样的线程创建并管理用户界面 (UI),因而称为 UI…
在winform中有一个控件可以显示html的内容,该控件就是webbrowser,设置它的DocumenText属性为HTML的内容即可. 在使用WebBrowser做UI的时候,我们有时不希望里面的链接被用户点击,更不希望弹出烦人的脚本错误提示框,也不希望用户能点出右键的IE菜单,要做到这些,其实都是很easy地… //设置webBrowser webBrowser1.ScriptErrorsSuppressed = true; //禁用错误脚本提示 webBrowser1.IsWebBro…
当进行winform的开发时,经常遇到用时比较久的操作,在传统的单线程程序中,用户必须等待这个耗时操作完成以后才能进行下一步的操作,这个时候,多线程编程就派上用场了,将这个耗时的操作放到一个新的子线程中,启动子线程完成操作,而不影响主线程的正常工作. 那么这个时候问题来了,当在子线程中需要操作界面上控件的参数时就不能简单的操作控件参数了,因为这会引起跨线程安全错误(子线程不是控件的初始化线程),具体原因不多讲,下面讲一下怎么解决子线程操作主线程控件的问题: 具体代码如下: //0初始:1导入2暂…
1多窗体操作:确定哪个是主窗体 通过窗体进入其他窗体 代码如下 Form2 f2 = new Form2();//f2窗体实例化出来 f2.Show();//进入f2窗体 this.Hide();//将主窗体隐藏 存在问题:主窗体隐藏了,关闭其它窗体后,没有将主窗体显示或关闭,那么程序就关不上了 问题处理:构造函数传值,将窗体传到另一个窗体中去 public partial class Form2 : Form { Form1 F1 = null;//在窗体2中将窗体1实例化出来 public…
在WinForm编程时会遇到通过后台线程操作界面的情况,直接在后台线程执行的方法中直接操作控件会报错,这时候就要使用跨线程方式间接操作控件.下面是两种实现方式.   1.采用定义delegate的方式 private delegate void SetTextBoxValueDelegate(string value); private void SetTextBoxValue(string value) { if (this.txtInfo.InvokeRequired)//判断是否跨线程请求…
测试例子: 外网电脑D:\TEST\delphiTest\webbrowsetest 参考文档: delphi 操作WebBrowser 元素值 http://hi.baidu.com/kinglike/item/c4608a8e55313f874514cf5c delphi中WEBBrowser网页JS函数调用delphi函数 http://blog.csdn.net/iseekcode/article/details/4740269 webbrowser精华内容 http://blog.cs…
BeginInvoke(new ThreadStart(() => toolStripButton1.Text = "aaa")); 1.非跨线程操作和部分跨线程get不会引发异常: 2.跨线程set,见上面的例子. 3.部分跨线程get,见下面的例子. var a = (int)EndInvoke(BeginInvoke(new Func<int>(() => toolStripComboBox1.SelectedIndex))); public static…
using System;using System.Collections.Generic;using System.Text;using System.Xml;using System.Configuration;using System.Reflection; namespace ProcessErrorDataTools{ public class ConfigManager { private static Configuration _configuration; public sta…
使用winform中的webbrowser抓取某个网站的数据时,遇到中文乱码的问题: 当时使用的获取网页内容的代码为: webBrowser1.DocumentText.ToString(); 不管我如何使用转换编码的方式进行转换,都是乱码,在度娘的帮助下,终于找到正确答案: 如果所爬取的网站的编码是GB2312,则可以使用如下代码进行读取网页数据: System.IO.StreamReader Reader = new System.IO.StreamReader(this.webBrowse…
在实际应用中我们可能需要WebBrowser控件主动执行我们需要的脚本,执行脚本现在有两种方法. 1.WebBrowser控件加载脚本,简单方便,适用于简短的脚本,无法执行复杂操作. webBrowser.Navigate("javascript:editor.areaToFrame();document.getElementById('articlePostBtn').click();"); 相当于你在浏览器地址栏,直接输入脚本来执行. 2.使用微软提供的动态库,也就是Microso…
我们通过网页上传一些特殊数据的时候,由于必填项众多,数量量大的时候,会发现工作相当繁琐,前段时间做了一个winform内嵌webBrowser模拟网页上传文档的小工具,发现了许多问题,总结一下: 先说明的是文档是用Excel指定格式制成的表格,数据是通过循环表格数据行上传的. 需求是如果文档已经上传那么必须提示,但上传成功不必提示(因为循环上传的话会弹出很多提示框). 代码如下:添加引用 在扩展程序集中找到Microsoft.mshtmlusing mshtml; 在窗体类上面贴标签: [Com…
问题一:如何不让WebBrowser中弹出“安全警告” 当链接https网址时,IE会自动弹出上图中的窗口. 关闭窗口的具体思路如下: 使用WebBrowser加载中/加载完毕后触发的事件处理程序,在处理程序中查找“安全警告”窗口,并在找到窗口后自动点击“是”或“否”来关闭窗口. 具体方法是: 1.给WebBrowser中的事件DocumentTitleChanged.DocumentCompleted等添加事件处理程序: 2.用DllImport链接user32: 3.在事件处理程序中写入如下…
最近做了一个查错工具,运用了winform文件操作的知识,做了几点总结,不全面,只总结了几点项目里用过的知识(关于以下内容只是个人的理解和总结,不对的地方请多指教,有补充的可以评论留言大家一起讨论学习). 一:基础知识 1.根据文件路径得到文件夹对象:DirectoryInfo di = new DirectoryInfo(filepath); 2.根据文件路径得到路径下所有的子目录的名称(包含路径)的集合: string[] diArray = Directory.GetDirectories…
首先要添加如下引用: WindowsFormsIntegration System.Drawing System.Windows.Forms 然后在xaml中添加引用 xmlns:winform="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"xmlns:wfi="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFo…
最近有个项目需要在winform 打开网络路径的pdf文件,自然想到了webbrowser,但是让我没想到的是,在我电脑调试一点问题都没有,但是到了其他同事的电脑是各种各样的问题,有的打不开,有的显示网页无法显示,百度了好久,大同小异的解决方法就是安装pdf 阅读器,设置为pdf默认打开程序,但是.  但是还是没有解决我的问题.实在没办法的就想不用webbrowser了,找个其他的组件看看可不可以,终于找到了,叫pdfview4net  而且也成功,但是,又是但是.这个东西打开有水印,问经理,一…