如何在鼠标指针WebBrowser控件下获取文本?

时间:2010-03-07 11:45:16

标签: c#

我正在使用.net WebBrowser控件处理WYSIWYG编辑器,我需要实现拼写检查。

我的问题是当我右键单击拼写错误的单词以显示所有拼写建议时,如何在鼠标指针下获取文字?

试图用javascript事件包装html标签中的每个拼写错误的单词,但是从javascript调用C#代码似乎存在问题。

2 个答案:

答案 0 :(得分:1)

好的 - 这是我的2美分。

首先,我想你有一个可编辑的元素,而不是div,你正在使用它作为你的WYSIWYG编辑器。我还猜你有一个Ajax函数,你已经设置了某个键击来检查DIV内容的整个(甚至一些)内容的拼写,它可以发回一个拼写错误的单词列表。

我的想法是 - 1.在可编辑div的内容上创建一个范围,然后使用TextRange对象搜索单词 - 这里:http://msdn.microsoft.com/en-us/library/ms535872%28VS.85%29.aspx。使用findText方法搜索文档中的文本(范围),并定位范围的起点和终点以包含搜索字符串。

一旦你有了这个,你应该将文本值复制到一个变量中,然后构造一个<跨度>甚至可能设置跨度的底部边框样式为红色下划线,甚至使用图像使其看起来像常规拼写错误的波浪形波浪。将此Span的内部内容设置为原始拼写错误的单词的值。另外,不要忘记为此SPAN分配onclick(或右键单击),以便稍后可以对拼写建议进行另一次查找。太好了,现在你有一个离线SPAN但它尚未插入到文档中。

下一步:使用TextRange pasteHTML方法将新SPAN粘贴到文档中,记住应该已经从查找操作中定义了范围,因此您不必再次查找文本(或选择它) )。

一旦span使用pasteHTML在文档中,它应该是直接的,只需创建另一个div,绝对将它放在SPAN下面,这样当用户右键单击它时 - “上下文菜单出现” - 由Ajax填充。

之后,它应该是一个非常简单的创建另一个范围的情况,并用简单的文本替换SPAN。

所有这些都是理论,但希望它有所帮助!

您也可以查看 - http://www.aspfree.com/c/a/Code-Examples/Searching-Body-Text-with-textRange-Enter-the-Gecko/ - 这将有助于您使整个解决方案在FireFox中工作(不仅仅是IE)

答案 1 :(得分:-1)

我将增加两美分,因为我正在研究类似的东西。

好的,所以我假设你是一个WebBrowser对象?如果是这样,我的建议是每次右键单击时都使用上下文菜单条。从那里你可以激活上下文菜单Opening事件,它将为你抓取特定的HTML元素。

简而言之,您可以使用类似的代码段

    Point mouseLocation;

    private void ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        HtmlElement elem = webBrowser.Document.GetElementFromPoint(mouseLocation);
        //From here you would do what ever it is you need for your element in the browser
    }

    private void webContextMenuStrip_Opening(object sender, CancelEventArgs e)
    {
        //This just gets you the specific mouse position for the given element
        mouseLocation = webBrowser.PointToClient(MousePosition);
    }

希望至少让你开始并祝你好运!