我想找到让自定义任务窗格获取当前检查器的方法。我应该使用哪种方法?
我通过遵循以下链接构建VSTO Outlook C#加载项: Walkthrough: Display custom task panes with email messages in Outlook
我在任务窗格中插入一个按钮。 现在,我想使用此按钮通过操作Button_Click
插入邮件标题,例如“ test for button”我尝试使用Outlook.Inspector inspector = Globals.ThisAddIn.Application.ActiveInspector();
或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=null
;
但是我的期望输出是mailItem,它等于任务窗格所在的当前项目。
答案 0 :(得分:0)
第一个代码示例是错误的-“如果(检查器是Outlook.MailItem),则始终为false,因为检查器是检查器对象,而不是MailItem对象。
对于第二个示例,请显示所有代码-您似乎具有类级别的Inspector属性,但不清楚如何设置。 Globals.ThisAddIn.Application.ActiveInspector()。CurrentItem应该可以返回MailItem对象,前提是它是电子邮件而不是其他类型的项目(当然,您应该始终进行类型检查)。
答案 1 :(得分:0)
John Hart @ 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";
}
原始答案请参阅GitHub上的问题: VSTO Outlook-Task Pane get Current MailItem