c# - 如何重新调整上下文菜单的用途以进行回复?
问题描述
我有一个 Explorer.xml,我发现右键单击回复控件位于 idMso“ContextMenuMailItem”中
<contextMenu idMso="ContextMenuMailItem">
<button idMso="Reply" onAction="Reply_RightClick"/>
</contextMenu>
但是,当我尝试为其设置 onAction 时,不会调用该函数。
public void Reply_RightClick(Office.IRibbonControl control)
{
//do something
}
我知道 .cs 文件设置正确,因为我有自定义按钮可以正确触发其各自的功能,而且我知道回复按钮是我想要的,因为当我将可见/启用切换为 false 时,它会被适当地隐藏/禁用. 我怎样才能拦截这个回复?请帮忙!
解决方案
如果它证明对其他人有帮助,我设法找到了解决方法!
首先,隐藏上下文菜单上的原始回复按钮。
<contextMenu idMso="ContextMenuMailItem">
<button idMso="Reply" visible="false"/>
</contextMenu>
然后,在您隐藏回复按钮的同一位置的上下文菜单中添加一个自定义回复按钮,并带有回复图标
<button id="Custom_Reply" onAction="reply_click" label="Reply" insertBeforeMso="MarkAsRead" imageMso="Reply"/>
<menuSeparator id="Separator" insertBeforeMso="MarkAsRead/>
之后,您将能够对回复按钮执行所需的操作
public void reply_click(Office.IRibbonControl control)
{
if(control.Context is Outlook.Selection)
{
Outlook.Selection item = control.Context as Outlook.Selection);
if(item[1] is Outlook.MailItem mailItem)
{
mailItem = item[1] as Outlook.MailItem;
//do stuff to your mailitem
//then do a .reply and display the repurposed mailitem
Outlook.MailItem replyMail = mailItem.Reply();
replyMail.Display();
//don't forget to release your comobjects!
if(replyMail != null) Marshal.ReleaseComObject(replyMail);
if(mailItem != null) Marshal.ReleaseComObject(mailItem);
}
}
}
推荐阅读
- python-3.x - 我可以查看地图上每个 Folium MarkerCluster 中的哪些点吗?
- javascript - 创建具有特定结构的图形(coderbyte)
- python - 在 django 中更新值
- c# - HTTP 错误 500.30 - ANCM 进程内启动失败 - “Microsoft.Data.SqlClient.TdsParser”引发异常
- json - 在 REST API 中发送汉字字符时出现问题
- macos - Apple Mac M1:VipsOperation:找不到类“webpsave_buffer”
- android - 如何在 Rubymotion webview 中添加确认 AlertDialog?
- r - 简化嵌套的 lapplys
- scala - Flink Cassandra 不支持给定 DataStream 的类型:GenericType
- javascript - React-Router 参数不可访问