Ous*_*bar 3 c# webbrowser-control winforms
我是 C# 的初学者,我遇到了一个问题。每次在webBrowser控件中进行搜索请求后,每次发现出现的情况时都需要弹出一个消息框,此时会选择出现的情况。我正在使用计时器刷新 webBrowser 并再次启动搜索。这就像一个通知系统。
using System;
using System.Windows.Forms;
using mshtml;
namespace websearch
{
public partial class Form1 : Form
{
Timer temp = new Timer();
//Timer refreshh = new Timer();
public Form1()
{
InitializeComponent();
temp.Tick += new EventHandler(refreshh_Tick);
temp.Interval = 1000 * 5;
temp.Enabled = true;
temp.Start();
WebBrowser1.Navigate("http://stackoverflow.com/");
}
void refreshh_Tick(object sender, EventArgs e)
{
WebBrowser1.Refresh();
WebBrowser1.DocumentCompleted += Carder_DocumentCompleted;
}
private void Carder_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
FindNext("C#", WebBrowser1);
temp.Tick += refreshh_Tick;
}
public void FindNext(string text, WebBrowser webBrowser2)
{
IHTMLDocument2 doc = webBrowser2.Document.DomDocument as IHTMLDocument2;
IHTMLSelectionObject sel = doc.selection;
IHTMLTxtRange rng = sel.createRange() as IHTMLTxtRange;
rng.collapse(false); // collapse the current selection so we start from the end of the previous range
if (rng.findText(text))
{
rng.select();
MessageBox.Show("Theire are new C# Question");
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
做这件事有很多种方法:
HtmlElements 并检查内容。如果您需要的文本存在,您可以选择该元素,或更改元素样式或执行您可能想做的任何其他操作。例如:
public bool SearchEle(HtmlElement ele, string text)
{
foreach (HtmlElement child in ele.Children)
{
if (SearchEle(child, text))
return true;
}
if (!string.IsNullOrEmpty(ele.InnerText) && ele.InnerText.Contains(text))
{
ele.ScrollIntoView(true);
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
webBrowser2.Document.Body.InnerText并进行字符串搜索。这是如果您不打算实际在视觉上突出显示文本,而只想找到文本。另一方面,您可能希望将代码移动WebBrowser1.DocumentCompleted += Carder_DocumentCompleted;到Form1()构造函数,而不是每次refreshh_Tick调用刷新函数时都这样做。
| 归档时间: |
|
| 查看次数: |
10441 次 |
| 最近记录: |