C# 为什么我的选择控件有时会更改selectedIndex而不会更改?

C# 为什么我的选择控件有时会更改selectedIndex而不会更改?,c#,html,C#,Html,背景:我每晚运行一个进程,读取一个数据库,然后将结果写入另一个系统。目标系统除了具有UI的HTML Web服务外,没有其他接口。我几年前就建立了这个系统,它在IE9中运行时非常可靠。但是,我必须在其上运行此过程的主机已从Windows 2008 R2更改为2012 R2,IE的版本已更改为IE 11,并且大部分都可以正常工作,但在某些情况下,它无法正常工作 我使用下拉菜单选择“关闭”(值=0)或“打开”(值=1),操作一个网页,下拉菜单的名称是可变的,因为有多个相同的下拉菜单,我找到它们,然后分

背景:我每晚运行一个进程,读取一个数据库,然后将结果写入另一个系统。目标系统除了具有UI的HTML Web服务外,没有其他接口。我几年前就建立了这个系统,它在IE9中运行时非常可靠。但是,我必须在其上运行此过程的主机已从Windows 2008 R2更改为2012 R2,IE的版本已更改为IE 11,并且大部分都可以正常工作,但在某些情况下,它无法正常工作

我使用下拉菜单选择“关闭”(值=0)或“打开”(值=1),操作一个网页,下拉菜单的名称是可变的,因为有多个相同的下拉菜单,我找到它们,然后分别设置

我已经编写了一些代码来查找选择并设置值,但在某些情况下,它像一个符咒一样工作,而在另一些情况下,它只是不设置值,即使我已经通过代码并观看了IE的页面,该页面没有设置值。代码如下:

bool bDone = false;
mshtml.IHTMLElementCollection objEventCollection = (mshtml.IHTMLElementCollection)objDocument.getElementsByTagName("select");
for (int i = 0; i < objEventCollection.length; i++)
{
    mshtml.IHTMLElement objElement = (mshtml.IHTMLElement)objEventCollection.item(i, 0);
    if (objElement.getAttribute("name").EndsWith("NewEvent"))
    {
        objElement.click();
        mshtml.HTMLSelectElement objEvent = (mshtml.HTMLSelectElement)objElement;
        switch (sEventType)
        {
            case "Off":
                objEvent.selectedIndex = 0; // This SOMETIMES works and SOMETIMES will error out!
                bDone = true;
                break;
            case "On":
                objEvent.selectedIndex = 1; // This SOMETIMES works and SOMETIMES will error out!
                bDone = true;
                break;
        }
    }
    if (bDone)
    {
        break;
    }
}
bOK = bDone;
boolbdone=false;
mshtml.IHTMLElementCollection objEventCollection=(mshtml.IHTMLElementCollection)objDocument.getElementsByTagName(“选择”);
for(int i=0;i
相关页面代码如下所示:

<td valign="middle" align="center"><input class="data" type="hidden" name="No1EventString" value="0"><input class="data" type="hidden" name="No1OriginalEvent" value="0"><select class="data" name="No1NewEvent">
<option value="0" selected="">Off</option>
<option value="1">On</option>
</select></td>

关
在…上
我不知道为什么有时候,NewEvent下拉列表的值在变化,但不是每次都在变化

当我在debug中运行此程序时,它运行得非常顺利,但有时会出现以下错误:

如果我无法修复,有谁知道更可靠的设置方法吗


或者,是否有解决办法,例如将焦点设置为“选择”,然后按下“向下”按钮(但我不知道如何操作)?

嗯,我在午餐时学到了一些东西:

似乎IE 11有时会拒绝ihtmlement.selectedIndex=x行,但当我改为ihtmlement.value=x行时,它是可靠的


那是什么时候改变的?

嗯,你的代码在哪里运行?在浏览器中?VB脚本?还有什么?代码正在Win32应用程序中运行。