问题是这样的:
我想让我的程序的用户能够在 webBrowser 控件中搜索给定的关键字(标准 Ctrl+ F)。我可以毫无问题地在文档中找到关键字并使用跨度和replace()函数突出显示所有实例。我am无法获得我想要使用的“查找下一个”功能。当用户单击“查找下一个”时,我希望文档滚动到下一个实例。如果我能得到一个边界框,我就可以使用导航功能。我使用以下代码在富文本框中使用相同的功能
//Select the found text
this.richTextBox.Select(matches[currentMatch], text.Length);
//Scroll to the found text
this.richTextBox.ScrollToCaret();
//Focus so the highlighting shows up
this.richTextBox.Focus();
任何人都可以提供一种方法来让它在网络浏览器中工作吗?
我在具有嵌入式 Web 浏览器控件的 WinForms 应用程序中实现了搜索功能。它有一个单独的文本框,用于输入搜索字符串和一个“查找”按钮。如果搜索字符串自上次搜索以来发生了变化,则单击按钮意味着常规查找,如果没有,则意味着“再次查找”。这是按钮处理程序:
private IHTMLTxtRange m_lastRange;
private AxWebBrowser m_browser;
private void OnSearch(object sender, EventArgs e) {
if (Body != null) {
IHTMLTxtRange range = Body.createTextRange();
if (! m_fTextIsNew) {
m_lastRange.moveStart("word", 1);
m_lastRange.setEndPoint("EndToEnd", range);
range = m_lastRange;
}
if (range.findText(m_txtSearch.Text, 0, 0)) {
try {
range.select();
m_lastRange = range;
m_fTextIsNew = false;
} catch (COMException) {
// don't know what to do
}
}
}
}
private DispHTMLDocument Document {
get {
try {
if (m_browser.Document != null) {
return (DispHTMLDocument) m_browser.Document;
}
} catch (InvalidCastException) {
// nothing to do
}
return null;
}
}
private DispHTMLBody Body {
get {
if ( (Document != null) && (Document.body != null) ) {
return (DispHTMLBody) Document.body;
} else {
return null;
}
}
}
m_fTextIsNew 在搜索框的 TextChanged 处理程序中设置为 true。
希望这可以帮助。
编辑:添加了正文和文档属性
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)