VSTO-Custom Task Pane如何获取当前的MailItem

问题描述 投票:0回答:2

我想找到一些方法让自定义任务窗格获取当前检查器。我应该用什么方法?

我按照以下链接构建VSTO Outlook C#add:Walkthrough: Display custom task panes with email messages in Outlook

我在任务窗格上插入一个按钮。现在,我想使用此按钮通过操作Button_Click插入“test for button”等邮件标题

我尝试使用Outlook.Inspector inspector = Globals.ThisAddIn.Application.ActiveInspector();

Orkazxsopoi

获得现任检查员,但似乎不起作用。

这是我的代码如下:

Outlook.MailItem mailItem = Inspector.CurrentItem as Outlook.MailItem;

我也尝试过这种方式:

private void InsertButton_Click(object sender, EventArgs e)
        {
            Outlook.Inspector inspector = Globals.ThisAddIn.Application.ActiveInspector();
            if (inspector is Outlook.MailItem)
            {
                public Outlook.MailItem mailItem;
                mailItem = inspector as Outlook.MailItem;
                mailItem.subject = "test for button";                
            }                               
        }

第一个代码private void InsertButton_Click(object sender, EventArgs e) { Outlook.MailItem mailItem = Inspector.CurrentItem as Outlook.MailItem; mailItem.subject = "test for button"; } 判断是错误的。第二个代码if;

但我的期望输出是mailItem等于任务窗格所在的当前项目。

c# vsto outlook-addin
2个回答
0
投票

第一个代码示例是错误的 - “if(inspector是Outlook.MailItem)”始终为false,因为inspector是Inspector对象,而不是MailItem对象。

对于第二个示例,请显示所有代码 - 您似乎具有类级Inspector属性,但不清楚如何设置。 Globals.ThisAddIn.Application.ActiveInspector()。CurrentItem应该返回一个MailItem对象,如果它是一个电子邮件而不是另一种项目(你当然应该总是进行类型检查)。


0
投票

John Hart @ GitHub回答了我的问题。以下是他的代码:

mailItem=null

原点回答在GitHub上看问题:private void Button1_Click(object sender, EventArgs e) { Inspector inspector = Globals.ThisAddIn.Application.ActiveInspector(); MailItem mailItem = inspector.CurrentItem as MailItem; mailItem.Subject = "test for button"; }

© www.soinside.com 2019 - 2024. All rights reserved.