如何在 VSTO outlook C# 中的功能区上显示窗体区域按钮

How to show form region button on my ribbon in VSTO outlook C#

我使用窗体区域创建了一个窗体,该窗体使用 VSTO outlook C# 接受用户输入。 打开此表单的按钮位于消息按钮附近,如图所示:

我想在我已经开发的自定义功能区(例如我的桌面 -> 服务台)中使用此按钮

是否可以将此按钮移动到我想要的功能区?

您可以在 add-in 中创建自定义功能区 UI,您可以在其中通过指定 idMso 来重复 built-in 控件。 VSTO 提供了两种可能的方式来自定义 Fluent UI(又名 Ribbon UI):

要查找控件 ID,您可以下载 Office 2016 Help Files: Office Fluent User Interface Control Identifiers。此外,您可以通过导航到 Customize ribbon 页面并查看弹出的提示在 Outlook 中查看它们。

此外,您可以在任何地方放置自定义功能区控件并调用以下代码来显示您的自定义 UI:

myitem.GetInspector.SetCurrentFormPage("Namespace.FormRegionClass")

SetCurrentFormPage 中使用的名称应该是自定义区域的完整 class 名称。

谢谢@Eugene,你的回答给了我解决问题的提示

首先我用代码打开新邮件:

Application oApp = Globals.ThisAddIn.Application;
        NameSpace oNs = oApp.GetNamespace("MAPI");
        MAPIFolder oInbox = oNs.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
        Items oItems = oInbox.Items;
        MailItem oForm = oItems.Add("IPM.Note");
        oForm.Display(false);

然后我使用 "ActiveInspector()" 而不是 "GetInspector" 并使用我的 class 名称

进行设置

"oApp.ActiveInspector().SetCurrentFormPage("NameSpace.ClassName");"

点击按钮的完整代码:

private void btnOpenMailForm_Click(object sender, RibbonControlEventArgs e)
    {
        Application oApp = Globals.ThisAddIn.Application;
        NameSpace oNs = oApp.GetNamespace("MAPI");
        MAPIFolder oInbox = oNs.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
        Items oItems = oInbox.Items;
        MailItem oForm = oItems.Add("IPM.Note");
        oForm.Display(false);  
        oApp.ActiveInspector().SetCurrentFormPage("NameSpace.ClassName");
    }

单击功能区按钮将打开我的自定义 Outlook 表单。