我这边做一个功能,点击某个按钮,就给页面上的WebBrowser加载一个路径,等待几秒钟获取WebBrowser里面的document,格式化为html,然后来取值,现在遇到的问题是,WebBrowser在加载的时候窗体卡的不行不行的
第一种我用当前窗体上定义的一个WebBrowser来实现,这种能取到值,但是卡的很不行
第二种我在方法里,new了一个WPF的WebBrowser对象,这样倒是不卡了但是这种不可见的控件,得到的document老是引发什么异常,取到的对象是空的
第三种我在方法里,new了一个Winform的WebBrowser对象,能取到值,但是也卡
我甚至还新建了一个窗体,在这个窗体上有一个WebBrowser控件,我new这个窗体,直接调用方法,结果跟第二种一样,不卡但是取不到值,我把窗体打开隐藏掉再调用方法,取得到值但是卡的很
表示我已经无奈了,求个知道的大牛帮个忙解决下这个问题,我想要的是,点击按钮之后这边方法执行,不影响我窗体的拖动,切换tabcontrol,和关闭什么的,谢谢了
可以了解一下WebBrowser.DocumentCompleted,当WebBrowser.ReadyState变化为WebBrowserReadyState.Complete时再读取里面的内容应该就没问题了。
delay是啥,阻塞了吧,用timer定时看看
1. 你所指的加载一个路径是什么意思? 本地的还是远程的?
如果是本地的, 直接给webbrowser.document.DocumentText
='asdfkjaslkdfj'; 这样赋值。 不过缺点是360会报警告。
2. delay你把主线程给阻塞了? 不卡死你才怪…………, 代码不能这么写, 建议你去看看webbrowser的几个方法, 其中有包含文档加载完成的方法:DocumentCompleted,
个人觉得Delay是根源啊,你应该等控件通知你加载完成。一般打开一个页面,会触发多次DocumentCompleted,注意判断下就ok了。