VSTO-Custom任务面板如何获取当前邮件项
VSTO-Custom Task Pane how to get current MailItem
我想找到一些方法让自定义任务窗格获得当前检查器。我应该使用什么方法?
我按照以下 Link 构建了一个 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
判断为false。而第二个代码 mailItem=null
;
但我期望的输出是 mailItem 等于任务窗格所在的当前项目。
第一个代码示例是错误的 - "if (inspector is Outlook.MailItem)" 始终为 false,因为 inspector 是一个 Inspector 对象,而不是 MailItem 对象。
对于第二个示例,请显示您的所有代码 - 您似乎有 class 级别的 Inspector 属性,但不清楚它是如何设置的。 Globals.ThisAddIn.Application.ActiveInspector().CurrentItem 应该适用于 return MailItem 对象,如果它是一封电子邮件而不是另一种类型的项目(您当然应该始终进行类型检查)。
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
我想找到一些方法让自定义任务窗格获得当前检查器。我应该使用什么方法?
我按照以下 Link 构建了一个 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
判断为false。而第二个代码 mailItem=null
;
但我期望的输出是 mailItem 等于任务窗格所在的当前项目。
第一个代码示例是错误的 - "if (inspector is Outlook.MailItem)" 始终为 false,因为 inspector 是一个 Inspector 对象,而不是 MailItem 对象。
对于第二个示例,请显示您的所有代码 - 您似乎有 class 级别的 Inspector 属性,但不清楚它是如何设置的。 Globals.ThisAddIn.Application.ActiveInspector().CurrentItem 应该适用于 return MailItem 对象,如果它是一封电子邮件而不是另一种类型的项目(您当然应该始终进行类型检查)。
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