初来贵宝地,向大家问两个问题
1.最近用webbrowser控件做个小东西,突然发现一个问题,我在WebBrowser1_DocumentComplete事件中写了一引起代码,能够正常执行,可一把webbrowser的visible属性设置为False时WebBrowser1_DocumentComplete里的代码似乎就不再执行了,请问一下各位老师是怎么回事。
2.怎么向web页面中的ListBox发送消息,还有按钮啊,文本框啊类似的?好像是取不到句柄的。
[解决办法]
1、那是微软的问题,不过应该可以激发NavigateComplete2事件;
2、web页面上的控件取不到句柄的,要想控制它,需要获得web document中该元素,一般采用通过name或id获得或者通过枚举法,之后可以控制该元素属性。
[解决办法]
1,不清楚你那边是啥原因,我这边测试了下,WebBrowser1.Visible为False时WebBrowser1_DocumentComplete事件是能正常响应的
2,页面中控件不是使用windows窗口实现的,一般是直接画上去的,建议用COM方式访问,比如近日的帖子中就有这么几个是相关的,相信可以给你可大致概念。另外你可在本论坛搜索"Webbrowser","网页"等关键字:
http://topic.csdn.net/u/20100326/17/5b3dfe6a-cd29-4fa4-a0e0-ff83fc21574a.html
WebBrowser1.Document.getElementById 为什么获取不到值?
http://topic.csdn.net/u/20100322/11/1ff87ee1-cec1-4066-aa2d-708c31460c6b.html
请教一webbrowser的一个方法
http://topic.csdn.net/u/20100316/21/209c5ac6-13ab-4c43-a18a-7334d20d6bb1.html
[解决办法]
"getElementById获得一个按钮ID后,我们可以用 .Click来模拟一次点击,"
"那么我们取得一个ListBox的ID后我们可以通过代码为其增加条目吗?,"
"还有可以在webbrowser执行完成后,通过InnerText找到关键代码后用replace换掉后按我们的代码执行后Post出去呢?"
回答这一部分:
1.Clikc模拟一次点击,其实也是GET/POST一些字串给服务器
拿ASPX来说,模拟网页控件的.Click,其__EVENTTARGET = "点击的控件名称" 或者是 POST的字串中增加&控件ID=控件名称
2.ListBox是服务器端控件,其实在前端生成的是HTML,增加条目是可以的,相当于客户端把页面修改,但是如果要提交到服务器端,就要看该ListBOX在服务器端有相关的事件可以触发,也无法任意添加的.(任意添加的不合法,服务器端不会接受的)
3.Replace要合法以及该处接受修改,才能POST,不能任意修改的.
[解决办法]