C#中的简单浏览器控件

时间:2009-09-17 17:39:05

标签: c# .net winforms internet-explorer

对于需要进行大量简单Web查找的员工,我有一个简单的C#WinForms Crud AP。目前它加载5个网站并将搜索词放入剪贴板。然后,员工必须将搜索词粘贴到每个站点的搜索文本框中,然后按Enter键。有没有简单的方法为他们输入数据?搜索文本框通常在网站加载时具有焦点,我无法找到检测页面加载时间或如何将数据发送到窗口的方法。

从这些有用的答案来看,我看起来是错误的。我在我的好朋友Google先生的帮助下使用了代码

System.Diagnostics.Process.Start("www.website.com");
Clipboard.SetText(textBox1.Text, TextDataFormat.Text);

本周我将在webbrowser控件上进行更多研究

3 个答案:

答案 0 :(得分:3)

您可以在页面加载完成后通知WebBrowser的DocumentCompleted事件。

如果您输入文本的文本框具有唯一ID,则可以使用WebBrowser.Document.GetElementById:

webBrowser.Document.GetElementById("some_id").InnerText = theSearchText;

GetElementById返回HtmlElement的实例(如果未找到该元素,则返回null)。请注意“.InnerText”可能不适用于所有元素类型,还有InnerHtml和许多其他属性,我建议在决定如何使用它之前使用HtmlElement类。

如果您没有元素的唯一ID,请告诉我,还有很多其他方法可以找到元素。包括通过Document.Body使用暴露的DOM。

答案 1 :(得分:1)

你应该能够挂钩Webbrowser的Navigated事件,该事件应该在页面加载时告诉你(我认为!我不是100%肯定)。至于设置文本,如果你确定文本框有焦点,你可以这样做:

        Clipboard.SetText("Stackoverflow");
        this.webBrowser1.Document.ExecCommand("Paste", false, null);

答案 2 :(得分:0)

加载页面(或框架!)时会触发WebBrowser的DocumentCompleted事件。当页面具有框架时,DocumentCompleted事件会多次触发。在DocumentCompleted事件中,您将ReadyState属性与ReadyState.Completed进行比较,以检查它是否已完全加载。

但总的来说,使用SendKeys并不是最好的方法。 Matthew Brindley的答案(使用GetElementById)是最好的方法,虽然这对文件输入控件不起作用。