如果选中复选框,我该怎么办?

时间:2014-02-18 07:30:25

标签: c# gecko geckofx

我正在尝试使用复选框检查Attribute.I尝试使用GeckoHtmlElement
 GetAttribute()函数但它总是返回checked属性的空值。

我试试这个:

Gecko.GeckoElementCollection z = Browser.Document.GetElementsByName("productBox[]");
foreach (Gecko.GeckoNode o in z)
{
   if (o.NodeType == NodeType.Element)
   {
      GeckoHtmlElement asd = (GeckoHtmlElement)o;
      string aa =asd.GetAttribute("checked");
      if (aa != null && aa == "True")
          liaaa.Add(o);
   }
}

checkBoxes的Html:

<input name="productBox[]" value="10914" class="noborder" type="checkbox">

我试试这个,但仍然无法正常工作。这将返回Null Gecko节点:

string aa =asd.Attributes["checked"];

更新
我完成了我的工作,但我的方式很糟糕,很脏,而且不太实用。在浏览器中DomMouseUp事件:

GeckoElement active = (GeckoElement)browser.Document.ActiveElement;
if (active.Attributes["name"].TextContent == "productBox[]")
{
   if (getHtmlelement(active).Parent.GetAttribute("style") == null ||
       getHtmlelement(active).GetAttribute("style") == "")
   {
      getHtmlelement(active).SetAttribute("style", "MyCheck");
      liaaa.Add(active);
   }
   else
   {
      getHtmlelement(active).SetAttribute("style", "");
      liaaa.Remove(active);
   }
}

它现在正在运行,因为在页面加载时默认情况下不会选中所有复选框。但是更好的方法可以帮助很多。

由于

2 个答案:

答案 0 :(得分:1)

string aa =asd.Attributes["checked"];

答案 1 :(得分:0)

转换为GeckoInputElement将允许您访问Checked属性:

if (o.NodeType == NodeType.Element && o is GeckoInputElement)
{
      GeckoInputElement asd = (GeckoInputElement)o;
      if (asd.Checked)
        ....
}