小弟现在做一个程序,需要给webbrowser控件中加载的窗体中的控件自动填写值,
现在常规的控件像文本框,下拉框之类的都可以赋值,但是,discuz日志发布中的内容框的赋值却不能成功.
下面是discuz日志发布中标题和内容的输入框代码
<tr>
<td>
<!---此处为标题,可以自动输入-->
<input type="text" class="t_input" id="subject" name="subject" value="" size="60" onblur="relatekw();" /></td></tr><tr><td><a id="doodleBox" href="magic.php?mid=doodle&showid=blog_doodle&target=uchome-ttHtmlEditor&from=editor" style="display:none"></a><textarea class="userData" name="message" id="uchome-ttHtmlEditor" style="height:100%;width:100%;display:none;border:0px"></textarea>
<!--此处为内容,不能自动输入,iframe下还有个body标签,值实际是赋值给了body,但是查看源代码时看不见,用chrome的审查元素可以看到-->
<iframe src="editor.php?charset=utf-8&allowhtml=&doodle=1" name="uchome-ifrHtmlEditor" id="uchome-ifrHtmlEditor" scrolling="no" border="0" frameborder="0" style="width:100%;border: 1px solid #C5C5C5;" height="400"></iframe>
</td>
</tr>另外,发布信息时,实际存储内容的是message标签
<textarea class="userData" name="message" id="uchome-ttHtmlEditor" style="height:100%;width:100%;display:none;border:0px"></textarea>
,但是直接给message赋值的话,不能显示到输入框中请教各位该怎样给内容输入框赋值?因为我要做的是模拟手动输入,所以不能直接用HttpWebRequest之类的如果方便的话,麻烦各位最好能打开一个discuz日志发布页面测试一下

解决方案 »

  1.   


    // 成功加载网页时,执行的相关操作
    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        if (!login)             // 用户已经成功“登录”了吗?
        {
            HtmlDocument d = webBrowser1.Document;
            HtmlElement btnLogin = d.All["imgDL"];
            if (btnLogin != null)
            {
                btnLogin.Click += new HtmlElementEventHandler(btnLogin_Click);
            }
            else
            {
                login = true;
                RegistryKey k = Registry.LocalMachine.OpenSubKey("SoftWare\\Microsoft\\Cjcx.com",true);   
                if (k == null) k = Registry.LocalMachine.OpenSubKey("SoftWare\\Microsoft", true).CreateSubKey("Cjcx.com"); 
                k.SetValue("userName", user);  
                k.SetValue("userPwd", pwd); 
                k.Close();
            }
        }
        else if (!clickCjlr)    // 单击过 “成绩录入”按钮吗?
        {
            HtmlDocument d = webBrowser1.Document.Window.Frames["topFrame"].Document; 
            HtmlElement lr = d.All["hlCJLR"];
            HtmlElement relogin = d.All["IMG1"];
            HtmlElement logout = d.All["IMG2"];
            if (lr != null)
            {
                relogin.Click += new HtmlElementEventHandler(relogin_Click);
                logout.Click += new HtmlElementEventHandler(logout_Click);
                lr.InvokeMember("click");
                clickCjlr = true;
            }
        }
    }
      

  2.   

    实现不行可以模拟键盘的tab得到焦点:SendKey.Send("{tab}");文本框中得到焦点后,再发送你想输入的值就可以了:SendKey.Send(值);
    这种方法,应该可以解决你的问题