vsto - Outlook VSTO 插件:根据 AppointmentItem.Body 中输入的文本更新 RibbonBar
问题描述
我正在尝试根据用户在 AppointmentItem.Body 中输入的文本更新我的自定义功能区。我有 2 个无法解决的问题: 1.) 当用户在 AppointmentItem 的正文中输入文本时,我找不到可靠触发的事件。我担心没有任何我可以订阅的事件。正确的?AppPropertyChange 不起作用。
2.) 我知道功能区有指向 ThisAddIn 实例的链接。但是在正确的体系结构中不应该有从 ThisAddIn 到功能区的引用。因此,即使我设法在 ThisAddIn 中找到要处理的正确事件,我也无法在 Ribbon 上调用 InvalidateUI,因为我没有指向 Ribbon 实例的链接。正确的?
解决方案
对你的问题1)
我认为没有事件监听 keydown 或其他的AppointmentItem.Body
. 你不能更好地扭转逻辑吗?因此,在单击功能区按钮后,您可以检查约会中的内容?
对于你的问题2)
解决方案是让功能区约Globals
. 确保您可以访问功能区并在 stackoverflow 上观看此问题
public partial class ThisAddIn {
Explorer activeExplorer;
private void ThisAddIn_Startup(object sender, EventArgs e) {
this.activeExplorer = this.Application.ActiveExplorer();
this.activeExplorer.ViewSwitch += new ExplorerEvents_10_ViewSwitchEventHandler(this.ViewSwitch);
}
private void ViewSwitch() {
bool isActive = false;
try {
Globals.Ribbons.CalendarRibbon.GroupCalendar.Visible = isActive;
Globals.Ribbons.CalendarRibbon.ButtonCalendarSync.Visible = isActive;
} catch (System.Exception ex) {
// ... catch the exception
}
}
}
推荐阅读
- python - Pygame Pong 桨没有出现
- python - 我如何将 tkinter python 用于短语 = input("ENTER TEXT") Tkinter 文本框?
- python - Python Pandas 将日期和时间合并为一列并使用线图绘图
- php - PHP - 从 HTML 中提取文本,翻译并放回
- javascript - 动态获取函数参数名称和值
- python - 将产量生成器添加到 python 函数
- c++ - 比较字符 [C++]
- c# - 成员`System.Collections.Generic.List
.Count' 不能用作方法或委托 - php - 使用数据库调用进行输出缓冲?
- debugging - 无法使用 org-capture:`Capture template 't':listp`