我正在查看一些创建 Outlook 上下文菜单按钮的示例,如下所示:
private void Application_ItemContextMenuDisplay(Microsoft.Office.Core.CommandBar CommandBar,
Selection Selection)
{
var button = (Office.CommandBarButton)CommandBar.Controls.
Add(Office.MsoControlType.msoControlButton, missing,
missing, missing, missing);
button.accName = "SowSelectedItem";
button.DescriptionText = "Show Selected item";
button.Caption = button.DescriptionText;
button.Tag = "ShowSelectedItem";
button.Click += ContextMenuItemClicked;
}
这一次就可以正常工作 - 它在菜单上创建一个按钮就好了,它是可点击的,我的事件处理程序在第一次访问时触发。
但是,菜单激活会反复触发,并且每次运行时似乎都添加了另一个事件处理程序(但菜单上只显示一个按钮),因此现在单击该按钮会多次触发处理程序 - 对于之前进行的每次访问一次 - 使用点击处理程序正在累积(即使我每次都添加一个新按钮)。
好的,所以我想我可以:
- 设置一个标志并只加载一次按钮(在后续激活时不显示)
- 缓存按钮并每次添加(也不会在后续激活时显示)
- 缓存并使按钮每次可见并启用(不显示)
我觉得我在这里遗漏了一些东西。如何连接按钮,以便获得正确的按钮激活并且只命中一个事件处理程序?