gpt4 book ai didi

c# - 如何在鼠标单击期间更改插入符号在 MSHTML 中的位置?

转载 作者:太空宇宙 更新时间:2023-11-03 18:49:27 25 4
gpt4 key购买 nike

我在应用程序中嵌入了一个基于 MSHTML 的控件,ContentEditable 模式用于编辑其中的文档。 HTML 文档的主体最初包含以下几行:

<div></div>
<div id="signature"></div>

插入符号位于文档的开头,即第一个 DIV 元素内。现在,当用户在控件内最后一行下方的某个位置单击鼠标时,插入符号将移动到第二个 DIV 元素中,因为它是距离用户单击点最近的元素。

我想在鼠标单击时将指针移动到第一个 DIV 的末尾。现在我有了计算插入符预期位置的代码,如 IMarkupPointerIDisplayPointer。我需要知道的是在何处拦截 MSHTML 事件管道以执行实际的插入符号移动。

我编写了实现 IHTMLEditDesigner 的代码,并使用 IHTMLCaret.MoveCaretToPointer 将插入符移动到预期位置。问题是无论我在哪里拦截事件(PreHandleEvent、PostHandleEvent 或 PostEditorEventNotify),单击后插入符号位置最终会恢复为默认位置(但如果我按住鼠标左键一段时间或如果我用鼠标右键单击)。

最佳答案

在加载到 IE 控件中的 HTML 中使用 jscript。如果您对 HTML 和 jscript 不太了解,您会发现此任务非常痛苦

当我尝试这样做时,请参阅这些问题以了解我的经验。

我还有很多其他问题,包括必须在 jscript 中编写调整大小逻辑以使 HTML 编辑器与 WinForm 表单一起调整大小,以及必须将默认表单/控件颜色传递到 HTML 编辑器中,使其看起来像写的然后用户更改了 Windows 上的配色方案。

更好的办法是找到一个 HTML 编辑器并将其加载到 IE 控件中,您仍然需要自己使用标准窗口颜色等进行编码。

您还可以使用第 3 方 winforms HTML 编辑器。如果可能的话,我认为您应该购买一个解决方案,因为 ContentEditable 在现实生活中比看起来要难得多。

Google 快速找到。

关于c# - 如何在鼠标单击期间更改插入符号在 MSHTML 中的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1368233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com