vb.net – 具有Late Bind对象/属性名称的WebBrowser问题
使用与对象/属性名称生成相关的WebBrowser后期绑定调用存在问题.
例如: WebBrowser1.Document.DomDocument.Forms.Myform.mycontrol.Value = "test" 将使用多个WebBrowser控件实例失败 实际发生的是mycontrol对象变为Mycontrol并且编译后的vb.net应用程序将失败并出现错误
这个问题有什么解决方案吗? 相同的代码适用于具有多个WebBrowser控件的vb6应用程序 编辑:此代码与以下内容混合:选项严格关闭 解决方法
@bugtussle
下一个作业将起作用: WebBrowser1.Document.Forms("Myform").Children("mycontrol").InnerText = "test" WebBrowser1.Document.DomDocument.Forms("Myform").all("mycontrol").Value = "test" WebBrowser1.Document.DomDocument.Forms.Myform.all.mycontrol.Value = "test" 这种方法的问题是需要更改和重新测试大量代码 如果您使用反射器实用程序查看Microsoft.VisualBasic.CompilerServices.LateBinding.LateGet方法,您会发现BindingFlags.IgnoreCase标志用于binder.InvokeMember调用. 我不知道这个调用是通过COM完成的,并且正在读取COM互操作在查找表中使用一个版本的名称的地方.就像参数名称最初作为“MyControl”输入到该表中一样,将使用此版本,而不是“mycontrol”.我想因为后来InvokeMember未能找到正确的成员. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |