【问题标题】:How can I get text under mouse pointer WebBrowser control?如何在鼠标指针 WebBrowser 控件下获取文本?
【发布时间】:2010-03-07 11:45:16
【问题描述】:

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

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

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

【问题讨论】:

  • 你可以使用......光标:指针; .......在 CSS 中

标签: c#


【解决方案1】:

好的 - 这是我的 2 美分。

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

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

一旦你有了这个,你应该将文本值复制到一个变量中,然后构造一个 甚至可能将 span 的底部边框样式设置为具有红色下划线,或者甚至使用图像使其看起来像那个经常拼错的波浪。将此 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)中工作

【讨论】:

    【解决方案2】:

    由于我目前正在做类似的事情,所以我会再增加两美分。

    好的,我假设你是一个 WebBrowser 对象?如果是这样,我的建议是每次右键单击时都使用上下文菜单条。从那里您可以触发上下文菜单打开事件,该事件将为您获取特定的 HTML 元素。

    简而言之,您可以使用类似的代码 sn-p

        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);
        }
    

    希望这至少能让你开始,祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      相关资源
      最近更新 更多