@ 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 не может найти правильного члена.