C# Outlook插件强制将光标移动到电子邮件正文的末尾

4
我正在通过编程向电子邮件正文添加表格。我想在插入后将光标移动到表格下方。我尝试过 SendKeys.Send("{PGDN 10}") 并且有一定的成功,但我不确定这是否是最好的方法。
还有其他方法可以强制将光标移动到电子邮件正文的末尾吗?

你尝试过使用WordEditor来完成这个任务吗?你应该可以通过GetInspector.WordEditor从MailItem对象中获取WordEditor。我相信你可以像这样做 editor.Range(index, index).Select()。 - Jesse
非常好,Jesse!你知道如何获取电子邮件中最后一个字符的索引吗? - vfirma
我相信你可以从mailItem.Body属性中获取邮件正文。这个属性可能包括签名之类的内容。也许考虑先预编译正文,然后将原始正文附加到电子邮件中,这样您就可以获得从电子邮件开头到原始正文(签名)的索引。 - Jesse
我感觉它很接近,但还不够完美。我尝试过mailitem.Body.Count(),并且有一些成功的经验,但似乎超出了索引的范围。 - vfirma
请看我的最新编辑作为例子。 - Jesse
1个回答

1
办公室模型允许您在访问 MailItem 对象的情况下获取 WordEditor 对象。一旦您拥有了 WordEditor 对象,就可以执行范围和选择操作,将光标放置在文档中的特定位置。可能有更简单的方法,但这是一个快速示例。
var editor = oMailItem.GetInspector.WordEditor;
editor.Range(1,1).Select();

编辑

如果您想将光标设置到签名之前正文的最后位置,可以按照以下示例进行操作。

var originalBody = oMailItem.HTMLBody;
oMailItem.HTMLBody = newBodyHTMLStringCompiled;
var wordDocument = oMailItem.GetInspector.WordEditor;
var endingPosition = wordDocument.Content.End;

// This will append the original signature
oMailItem.HTMLBody += originalBody;

// Set the range for the cursor
wordDocument.Range(endingPosition, endingPosition).Select();

感谢您的热烈回应!"newBodyHTMLStringCompiled"是什么? - vfirma
var endingPosition = wordDocument.Content.End - 1; 解决了我的问题。感谢这个例子! - vfirma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接