Как вставить форматированный текст в объект MeetingItem с помощью пользовательской кнопки ленты? - PullRequest
0 голосов
/ 12 января 2019

Краткое описание проблемы

Я создаю плагин 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, чтобы пользователь мог заполнить шаблон.

...