前提:
软件模块里用 WindowsFormsHost 嵌入Office Word,可操作Word
功能;
Word表格内,鼠标右键,增加自定义的菜单项(如 ”测试“)
实现(粗暴上代码)》》
-
设定菜单项属性内容
/// <summary>
/// 菜单项"测试"的Tag标记
/// </summary>
public static readonly string AddMenuTag = "MenuTest";
/// <summary>
/// 菜单项"测试"的文字
/// </summary>
public static readonly string AddMenuCaption = "测试";
/// <summary>
/// 菜单项"测试"所在NameLocal命令栏
/// a.Table Cells 表单元格
/// b.Table Text 表格文字
/// c.Table Headings 表格标题
/// </summary>
public static readonly List<string> AddMenuCommandBarNameLocals = new List<string>() { "Table Cells", "Table Text", "Table Headings" };
-
菜单的初始化与清理时机
在打开Word的处理中,加入菜单项的初始化;关闭时清理菜单项
右键点击事件前设置菜单的Click事件,否则触发无效
/// <summary>
/// 打开Word
/// </summary>
private void OpenFile()
{
//...Open File...
//添加菜单项,bool-菜单项是否可用
InitReportRightMenu(true);
AppWord.WindowBeforeRightClick += AppWord_WindowBeforeRightClick;
}
/// <summary>
/// Word右键点击前的事件处理
/// </summary>
/// <param name="Sel"></param>
/// <param name="Cancel"></param>
public void AppWord_WindowBeforeRightClick(Word.Selection Sel, ref bool Cancel)
{
//检查菜单项是否已存在,不存在则再初始化添加一次
//然后未菜单项注册点击后的处理事件(Handler