Outlook 功能区加载时 Application.ActiveInspector() 为 Null
是否可以在功能区加载时访问 ActiveInspector。 当我使用自定义表单时,Application.ActiveInspector() 返回正确的值,但对于默认联系表单则不返回正确的值。
我需要 ActiveInspector 根据 ActiveInspector().CurrentItem 中的属性值自定义功能区按钮。
Is it possible to access the ActiveInspector at the time of ribbon load. Application.ActiveInspector() returns proper value when I use custom form but does not for default contact form.
I need the ActiveInspector to customize ribbon button depending on a property value in ActiveInspector().CurrentItem.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您能否处理 Inspectors 集合的 NewInspector 事件,然后将其保留在可以从功能区加载事件访问的静态字段中(可能应该使用 WeakReference)?
我还没有使用 Outlook 进行任何功能区自定义,但我在我的旧 Tablet PC 产品 TEO 中与检查员一起进行了大量工作。 与它们一起工作是一件很痛苦的事情,但你不想做的主要事情就是长时间保留 Inspector 参考,因为关闭 Outlook 或取消挂起的编辑时你会遇到各种奇怪的问题。
Can you handle the NewInspector event of the Inspectors collection, then hold onto that in a static field (probably should use a WeakReference) that you can access from the ribbon load event?
I haven't done any Ribbon customization with Outlook but I've done extensive work with inspectors in my old Tablet PC product, TEO. They're a pain in the ass to work with but the main thing you don't wanna do is hang onto an Inspector reference too long because you'll get all kinds of weird problems with shutting down Outlook or canceling pending edits.
我对上面的内容做了一些改动,因为我维护了开放检查员的列表(我将检查员包装起来并将其保留在列表中)。
将它们添加到新的检查器事件中,并在连线关闭事件关闭时将其删除。
在我的功能区代码中,我有一个静态方法 FindOutlookInspector,它使用功能区的 control.context 查找检查器。
沿着这些思路..
OutlookInspector 是我包装的检查器类,但您可能不需要它等。
另外我只关心邮件项目
然后在功能区代码中我可以调用 FindOutlookInspector 来获取包装的检查器
I do a slight variation on the above in that I maintain list of the open inspectors (I wrap the inspector and keep that in the list).
Adding them on the new inspector event and removing them on a wired up close event close.
In my ribbon code I have a static method FindOutlookInspector that finds the inspector using the control.context of the ribbon.
Something along these lines ..
OutlookInspector is my wrapped inspector class but you may not need that etc.
Also I only care about Mail Items
Then in the ribbon code I can call
FindOutlookInspector
to get the wrapped inspector