【问题标题】:How do I refresh a "form element" when it is changed through a webbrowser control?通过网络浏览器控件更改“表单元素”时如何刷新它?
【发布时间】:2011-11-27 23:00:22
【问题描述】:

我正在使用 VB6(是的,我知道它已经 10 岁了 :),但它可以工作)。 VB.NET 答案也可以,所以如果你知道答案,也请回答!

我正在“手动”在表单中设置下拉框,但“网络浏览器”似乎没有更新。

Here's an example

如果您在表格中注意到,它有一个地方要求您填写一个状态。 (即加利福尼亚等)。它看起来像 MSIE 中的 javascript/DHTML 弹出框(firefox 不这样做,因此您需要使用 MSIE,因为这是 webbrowser 控件所依赖的)。如果我“单击”“状态”字段,则会出现一个弹出框。然后我可以说为加利福尼亚选择“CA”,它会更新它。 (现在是“CA”)。

如果我以编程方式这样做,我会这样做:

WebBrowser1.forms(2).elements(13).value = "CA" ' (sets it to 'california')
WebBrowser1.forms(2).elements(13).item(9).selected = true (makes sure it is 'selected')

然而——在网络浏览器控件中——它仍然看起来好像什么都没有改变。 (实际上它有,即如果我提交表单,它将提交正确的信息),但它只是没有“更新”它。

您知道如何进行“强制”刷新(以编程方式或通过一些 javascript/dhtml 刷新),然后正确地“更新”该字段以显示已选择“CA”吗?

非常感谢!

【问题讨论】:

    标签: vb6 browser controls dhtml


    【解决方案1】:

    我使用的最后一个 VB 版本是 VB3,所以请原谅我的 VB 语法:)

    如果更改事件有您要模拟的处理程序

    WebBrowser1.forms(2).elements(13).item(9).fireEvent("onchange",WebBrowser1.Document.createEventObject())

    【讨论】:

    • 哇!感谢您的回复,由于这个问题的独特性,我不确定我是否会得到一个......好吧......我试过了(对于这个特定的网页示例),它似乎并不“完全”工作(我承认我不知道 fireevent 属性和/或如何使用它)。但无论如何——我已经这样做了,但似乎什么也没发生。我正在使用的等效代码(对于fireevent,它可以正常工作)是这样的: WebBrowser1.forms(2).elements(13).value= "CA" WebBrowser1.forms(2).elements(13).fireEvent ( "onchange",WebBrowser1.Document.createEventObject())
    • 您知道我需要为这个特定示例(上面的链接/示例)做什么来更新“状态”属性吗?非常感谢!
    • 不...看起来 select 没有 onchange 处理程序,如果您正确找到该项目,则设置 selected 属性应该可以工作。 daftlogic.com/… 有一个示例,您可以用作参考
    猜你喜欢
    • 2015-03-23
    • 1970-01-01
    • 2015-05-09
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 2021-12-05
    • 1970-01-01
    相关资源
    最近更新 更多