C# 从IE浏览器检索所选文本时出现的问题

C# 从IE浏览器检索所选文本时出现的问题,c#,internet-explorer,dom,webbrowser-control,dom-events,C#,Internet Explorer,Dom,Webbrowser Control,Dom Events,我正在创建一个IE浏览器插件,它需要不断更新用户选择的文本,或者如果当前没有选择任何文本。我学习了如何通过以下方式获取所选文本。这是我这样做的代码: var doc = browser.Document as IHTMLDocument2; var selection = doc.selection as IHTMLSelectionObject; var range = selection.createRange() as IHTMLTxtRange; string selectedText

我正在创建一个IE浏览器插件,它需要不断更新用户选择的文本,或者如果当前没有选择任何文本。我学习了如何通过以下方式获取所选文本。这是我这样做的代码:

var doc = browser.Document as IHTMLDocument2; var selection = doc.selection as IHTMLSelectionObject; var range = selection.createRange() as IHTMLTxtRange; string selectedText = range.text; var doc=browser.Document作为IHTMLDocument2; var selection=单据选择作为IHTMLSELECTION对象; var range=selection.createRange()作为IHTMLTxtRange; 字符串selectedText=range.text; 但是,我很难确定访问range.text以更新插件的事件处理程序。单独使用selectionchange事件并不适用于所有情况。当用户通过直接单击所选内容来取消选择文本时,与单击网页的其他部分不同,在引发selectionchange时,range.text仍然包含旧的(非空)值。一种解决方法是还侦听单击事件。selectionchange之后会立即引发click事件,但此时range.text最终为空。然而,我遇到了另一个问题,我还没有找到解决办法。也就是说,如果用户双击某个单词,然后选择它,则根本不会引发selectionchange事件。另外,当引发click事件(或mousedown事件或selectstart事件)时,range.text仍然为空


我如何解决后一个问题?或者,我可以采取更好的方法吗?

尝试使用ondragend事件进行简单选择,使用ondblclick事件进行双击选择。如果不起作用,请尝试组合一些事件()

尝试将ondragend事件用于简单选择,将ondblclick事件用于双击选择。如果不起作用,尝试使用dblclick事件组合一些事件()

解决了单字双击选择的问题。感谢您指出这一事件-我没有注意到,可能是因为元音缺失。微软有人的键盘显然坏了。至于ondragend事件,它实际上并不适用,因为拖动选择不是DnD操作。因此,现在在我的程序中,我只是将所有三个事件(selectionchange、click和dblclick)路由到保存range.text值的同一个处理程序。使用dblclick事件解决了单个单词双击选择的问题。感谢您指出这一事件-我没有注意到,可能是因为元音缺失。微软有人的键盘显然坏了。至于ondragend事件,它实际上并不适用,因为拖动选择不是DnD操作。所以现在在我的程序中,我只是将所有三个事件——selectionchange、click和dblclick——路由到保存range.text值的同一个处理程序。