我使用窗体区域创建了一个窗体,该窗体使用VSTO Outlook C#接受用户输入。 如图所示,打开此表单的按钮位于“消息”按钮附近:
我希望已开发的自定义功能区(例如,MY DESK-> Service Desk)中的此按钮
是否可以将此按钮移到我想要的功能区上?
答案 0 :(得分:0)
您可以在外接程序中创建自定义功能区UI,在其中可以通过指定内置控件idMso
来重复内置控件。 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中使用的名称应为您的自定义区域的完整类名。
答案 1 :(得分:0)
谢谢@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”,并使用我的类名进行设置
"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");
}
这将通过功能区按钮的按钮单击打开我的自定义外观表单。