private void button1_Click(object sender, EventArgs e)
        {
            webBrowser1.Navigate("http://passport.58.com/reg/?city=zz");
            HtmlDocument doc = this.webBrowser1.Document;
            for (int k = 0; k < 10; k++)
            {
                doc = this.webBrowser1.Document;
            }
            foreach (HtmlElement em in doc.All)
            {
                string str = em.Name;
                if (str == "nickName")//用户名
                {                    em.SetAttribute("value", "fsdd1234nm");
                }
                else if (str == "password")//密码
                {                    em.SetAttribute("value", "fsdd1234");
                }
                else if (str == "cpassword")
                {
                    em.SetAttribute("value", "fsdd1234");
                }
                else if (str == "txtemail")
                {
                    em.SetAttribute("value", "[email protected]");
                }
                HtmlElementCollection hec = doc.GetElementsByTagName("input");
                foreach (HtmlElement he in hec)
                {
                    if (he.GetAttribute("type") == "submit" || he.GetAttribute("type") == "image")
                    {
                        he.InvokeMember("click");
                    }
                }
            }

解决方案 »

  1.   

    当调试器停在有bug的语句上的时候,你把鼠标移到各个变量上去的时候,就可以看到变量的值是不是null。使用调试窗口也可以进一步看到各个变量的值和各种属性。你还可以从调用堆栈去调用之前的各层次的入口函数,看看之前各个层次都怎样传送数据的,从而分析出为什么那个变量是null。学会使用调试器。不要问别人什么变量是null,你应该自己学会动手。
      

  2.   

    打个比方,调试器中断在 foreach (HtmlElement he in hec) 这条语句上,你把鼠标移到hec上看到它的值是null,这种自己动手的能力该有的。自己先调试出到底是哪一个语句的哪一个变量是null,然后再问别人具体而准确的问题。
      

  3.   

    谢谢,我知道是doc 为null,但问题解决不了。应该是webBrowser1没有加载成功,找不到方法了。请高手指点指点
      

  4.   

      webBrowser1.Navigate("http://passport.58.com/reg/?city=zz");
      HtmlDocument doc = this.webBrowser1.Document;这样是null的.
    因为你输入命令后马上下一句就要求得到里面的结果.
    webBrowser1里面只有一个网址..Document还没有加载完网页呢.
    应该给个加载网页的时间
      

  5.   

    DocumentCompleted 是载入完成的事件参考http://msdn.microsoft.com/zh-cn/library/system.windows.forms.webbrowser.documentcompleted(v=VS.90).aspx
      

  6.   


    什么什么?我随便从最后胡乱挑出一条代码来,就是因为认为可能是前边的代码有问题,以免你把握的举例当作什么答案了。你动手调试了吗?你怎么知道doc为null,我可没有说过它是null啊,你别赖在我的举例上啊,你要自己动手调试而不要等着别人给你一堆胡乱的猜测啊。
      

  7.   

    你的题目中也说了“问题在哪呀?”,可是后边说“我知道是doc 为null”,很明显你是先考我会不会瞎猜的能力。等等。这能够说明问题了吧?其实交流这类问题没有好的心情反馈,甚至有一些沮丧。
      

  8.   

    sorry,首先,这个问题地的有些问题,没有说明白,对不起;
    然后,我知道你是举例,没有说你是瞎猜的意思;我说的doc 为null应该就是问题所在,而原因应该是webBrowser1没有加载成功。根据大家的提示,用webBrowser1_DocumentCompleted能解决举例的问题。但没有解决我整体程序的难题。不知道有没有其它的方法来判断是否加载成功...