首页 新闻 会员 周边 捐助

WebBrowser加载路径的时候窗体卡住,不能切换不能拖动不能点击按钮

0
悬赏园豆:50 [已解决问题] 解决于 2021-07-05 11:38

我这边做一个功能,点击某个按钮,就给页面上的WebBrowser加载一个路径,等待几秒钟获取WebBrowser里面的document,格式化为html,然后来取值,现在遇到的问题是,WebBrowser在加载的时候窗体卡的不行不行的


第一种我用当前窗体上定义的一个WebBrowser来实现,这种能取到值,但是卡的很不行


第二种我在方法里,new了一个WPF的WebBrowser对象,这样倒是不卡了但是这种不可见的控件,得到的document老是引发什么异常,取到的对象是空的


第三种我在方法里,new了一个Winform的WebBrowser对象,能取到值,但是也卡


我甚至还新建了一个窗体,在这个窗体上有一个WebBrowser控件,我new这个窗体,直接调用方法,结果跟第二种一样,不卡但是取不到值,我把窗体打开隐藏掉再调用方法,取得到值但是卡的很

表示我已经无奈了,求个知道的大牛帮个忙解决下这个问题,我想要的是,点击按钮之后这边方法执行,不影响我窗体的拖动,切换tabcontrol,和关闭什么的,谢谢了

大帅比的主页 大帅比 | 初学一级 | 园豆:68
提问于:2015-01-31 14:29
< >
分享
最佳答案
0

可以了解一下WebBrowser.DocumentCompleted,当WebBrowser.ReadyState变化为WebBrowserReadyState.Complete时再读取里面的内容应该就没问题了。

收获园豆:20
I,Robot | 大侠五级 |园豆:9783 | 2015-01-31 15:27
其他回答(3)
0

delay是啥,阻塞了吧,用timer定时看看

收获园豆:10
上帝之城 | 园豆:2549 (老鸟四级) | 2015-02-01 21:59
0

1. 你所指的加载一个路径是什么意思? 本地的还是远程的? 

    如果是本地的, 直接给webbrowser.document.DocumentText

='asdfkjaslkdfj'; 这样赋值。 不过缺点是360会报警告。 

2. delay你把主线程给阻塞了? 不卡死你才怪…………, 代码不能这么写, 建议你去看看webbrowser的几个方法, 其中有包含文档加载完成的方法:DocumentCompleted, 

收获园豆:10
问天何必 | 园豆:3311 (老鸟四级) | 2015-02-02 09:26
0

个人觉得Delay是根源啊,你应该等控件通知你加载完成。一般打开一个页面,会触发多次DocumentCompleted,注意判断下就ok了。

收获园豆:10
幻天芒 | 园豆:37205 (高人七级) | 2015-02-03 09:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册