Я пытаюсь создать свое собственное контекстное меню, которое показывает, когда Word находится в пользовательском «режиме». Для этого я хочу отключить все контекстные меню по умолчанию в пользу моего. Это прекрасно работает при щелчке правой кнопкой мыши по тексту, но не при щелчке правой кнопкой мыши по изображениям или текстовым полям (кажется, что это объекты в целом). Похоже, что параметр Cancel события игнорируется при щелчке правой кнопкой мыши по изображениям, поэтому он не останавливает показ контекстного меню Word.
Я что-то не так делаю, или это ошибка в Word?
Есть ли у кого-нибудь решение для глобального добавления пунктов контекстного меню и скрытия остальных?
Альтернативой моей цели также может быть решение.
Я пытался использовать ribbon.xml, но есть много разных контекстных меню с множеством разных кнопок, галерей и т. Д., Которые мне пришлось бы активно скрывать. Кроме того, мне пришлось бы дублировать много XML, чтобы добавить свои кнопки ко всем этим меню. В этом стремлении я нашел документацию для перечисления этих пунктов контекстного меню, в которой отсутствует полный список, из-за чего мне не хватило кнопки idMso. Кроме того, если бы Microsoft добавила новый элемент, мне пришлось бы выпустить обновление, чтобы активно удалить новый элемент. Весь способ ленты.xml работы с контекстными меню - очень сложный способ добиться того, что должно быть простым запросом (на мой взгляд).
public partial class ThisAddIn
{
internal bool CustomContextMenuMode = true;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
ThisAddIn.WordApplication.WindowBeforeRightClick += new Word.ApplicationEvents4_WindowBeforeRightClickEventHandler(Application_WindowBeforeRightClick);
}
private static void Application_WindowBeforeRightClick(Word.Selection Sel, ref bool Cancel)
{
if (CustomContextMenuMode == true)
{
MessageBox.Show("Context menu shows here!");
Cancel = true;
return;
}
Cancel = false;
}
}
Если щелкнуть правой кнопкой мыши текст (с диапазоном выбора или без него), таблицу или многое другое, вы увидите, что отображается окно сообщения. А в случае отклонения параметр Cancel запрещает показ контекстного меню по умолчанию.
Однако при щелчке правой кнопкой мыши на изображении отображается окно сообщения (как и раньше), но при отклонении все равно отображается контекстное меню изображения Word.
Вот моя версия Word:
Office 365 Business,
Версия Word 1903 (сборка 11425.20204) или v16.0.11425.20200
Заранее спасибо!