本帖最后由 aini9425 于 2013-05-17 12:40:54 编辑

解决方案 »

  1.   

    你进入一个误区了,你不是必须通过触发已有控件的单击事件才能满足你的要求的,你可以直接调用上面按钮的js方法就可以了,在webbroswer中有方法可以直接调用js方法 signupBotton 的
      

  2.   

    <input type="submit" value="确定" style="font-size:30px;font-weight:bold; width:150px;" />
    那这样的按钮怎么办?
      

  3.   

    只要你获取了html元素,那么你就可以使用InvokeMember("click")来触发点击事件,实际测试可以触发jq的和asp.net的
      

  4.   


    我是新手,是这样的么,但貌似不行
    HtmlElement tbsubmit = webBrowser1.Document.All["Submit"]; 
    tbsubmit.InvokeMember("click");
    网页代码这样的(一部分)
    <form method="post" action="?con=signin&act=add" name="theForm" id="theForm">
    <input type="submit" value="确定" style="font-size:30px;font-weight:bold; width:150px;" />
    </form >
      

  5.   

    通过文档结构、className和tagName也可以搜索到具体的 HtmlElement 啊。
      

  6.   

    给举个例子吧。假设你使用webbrowser来显示 http://bbs.csdn.net/forums/DotNET 网页,并且想点击其 “发帖”按钮(它没有id),你可以这样写void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        if (this.webBrowser1.ReadyState == WebBrowserReadyState.Complete)
        {
            var top = (from n in this.webBrowser1.Document.GetElementsByTagName("DIV").Cast<HtmlElement>()
                        where n.GetAttribute("className") == "page_nav"
                        select n).First();
            var link = (from n in top.All.Cast<HtmlElement>()
                        where n.TagName == "A" && n.GetAttribute("className") == "btn_1"
                        select n).First();
            link.InvokeMember("click");
        }
    }
      

  7.   

    当然也可以写void Flip_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        if (this.webBrowser1.ReadyState == WebBrowserReadyState.Complete)
        {
            var top = (from n in this.webBrowser1.Document.GetElementsByTagName("DIV").Cast<HtmlElement>()
                        where n.GetAttribute("className") == "page_nav"
                        select n).First();
            var link = (from n in top.GetElementsByTagName("A").Cast<HtmlElement>()
                        where n.GetAttribute("className") == "btn_1"
                        select n).First();
            link.InvokeMember("click");
        }
    }或者其他写法也都可以。总之,如果没有id,可以靠任何其他特征来搜索。为了快速,你可以利用任何结构化信息,多写上两行代码,来加速。