Краткое описание проблемы
Я создаю плагин VSTO для Outlook 2016. Моя цель состоит в том, чтобы на ленте была кнопка, которая при нажатии вставит шаблон отформатированного текста в тело объекта MeetingtItem. Кнопка будет видна только тогда, когда пользователь перейдет к созданию нового MeetingItem.
Шаблон будет для вставки повестки дня в тело объекта MeetingItem. Это делается для того, чтобы поощрять пользователей вставлять повестки дня в свои приглашения на собрания, чтобы повысить производительность и устранить ненужные собрания.
Фон и что я пробовал
Я создал проект VSTO, используя шаблон надстроек VSTO для Outlook 2013 и 2016, в Visual Studio 2017. Этот шаблон предоставляет две функции в общедоступном частичном классе ThisAddIn. Эти функции называются ThisAddIn_Startup и ThisAddIn_Shutdown.
Используя сочетание клавиш Shift + Ctrl + A, я создал новый элемент ленты с помощью визуального дизайнера. Внутри визуального дизайнера я нажал на элемент tab1, который был сгенерирован для меня. Я установил для его поля метки значение Meeting, а для поля ControlId - TabAppointment. Это то, что позволяет кнопке ленты появляться только в MeetingItem.
Затем я щелкнул элемент group1, сгенерированный в визуальном конструкторе, и установил для него метку Agenda. В этой группе я добавил кнопку. Ярлык этой кнопки - Вставить повестку дня.
После этого я экспортировал свою ленту в xml. В теге кнопки я добавил свойство onAction и установил его значение в DisplayMessageBox. Это имя моей функции обратного вызова, которую я использую для тестирования. Его цель - вывести на экран окно с сообщением Hello World.
Именно в этот момент я застрял, и я не уверен, что делать дальше.
Код
Внутри класса Ribbon1.cs я добавил функцию DisplayMessageBox. Ниже я показываю строки 62 - 65 этого файла. Остальная часть кода в этом файле была сгенерирована Visual Studio.
public void DisplayMessageBox(Office.IRibbonControl control)
{
MessageBox.Show("Hello World");
}
Внутри класса ThisAddIn.cs я добавил следующую функцию.
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
// Return the Ribbon that we created.
return new Ribbon1()
}
В настоящее время лента отображается внутри MeetingItem, как и предполагалось. Созданная мной кнопка «Вставить повестку дня» связана с функцией DisplayMessageBox.
В дальнейшем я хочу переименовать функцию DisplayMessageBox, чтобы она точно описывала, что я хочу от нее сделать. Ex. InsertAgenda (). Эта функция должна вставлять форматированный текстовый шаблон в тело MeetingItem, чтобы пользователь мог заполнить шаблон.