Надстройка Outlook с использованием .NET

Мы разрабатывали надстройку Outlook с использованием Visual Studio 2008. Однако я столкнулся со странным поведением при добавлении кнопки команды на настраиваемую панель команд. Это поведение отражается, когда мы добавляем кнопку в окна ответа, ответа всем и пересылки. Проблема в том, что заголовок командной кнопки не отображается, хотя при отладке с использованием VS заголовок отображается правильно. Но кнопка без заголовка при просмотре в Outlook (2003).

У меня есть фрагмент кода, как показано ниже. Любая помощь будет оценена по достоинству.

private void AddButtonInNewInspector(Microsoft.Office.Interop.Outlook.Inspector inspector)
        {
            try
            {
                if (inspector.CurrentItem is Microsoft.Office.Interop.Outlook.MailItem)
                {


                    try
                    {                       
                        foreach (CommandBar c in inspector.CommandBars)
                        {
                            if (c.Name == "custom")
                            {
                                c.Delete();
                            }
                        }
                    }
                    catch
                    {
                    }
                    finally
                    {
                        //Add Custom Command bar and command button.
                        CommandBar myCommandBar = inspector.CommandBars.Add("custom", MsoBarPosition.msoBarTop, false, true);
                        myCommandBar.Visible = true;

                        CommandBarControl myCommandbarButton = myCommandBar.Controls.Add(MsoControlType.msoControlButton, 1, "Add", System.Reflection.Missing.Value, true);                        
                        myCommandbarButton.Caption = "Add Email";
                        myCommandbarButton.Width = 900;
                        myCommandbarButton.Visible = true;
                        myCommandbarButton.DescriptionText = "This is Add Email Button";

                        CommandBarButton btnclickhandler = (CommandBarButton)myCommandbarButton;
                        btnclickhandler.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(this.OnAddEmailButtonClick);
                    }


                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message.ToString(), "AddButtInNewInspector");
            }
        }
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
1 662
3

Ответы 3

Я не знаю ответа на ваш вопрос, но я настоятельно рекомендую Add-In Express для выполнения надстройки. См. http://www.add-in-express.com/add-in-net/. Я использовал это во многих проектах, в том числе в некоторых коммерческих программах, и это совершенно потрясающе.

Он выполняет всю интеграцию с Outlook (и офисом) за вас, поэтому вы просто работаете с ним, как с любой панелью инструментов, и просто сосредотачиваетесь на специфике того, что вам нужно для этого. Вам никогда не придется беспокоиться о расширяемости Outlook. Настоятельно рекомендуется.

В любом случае, просто хотел упомянуть об этом как о чем-то, на что стоит обратить внимание. Это определенно избавит вас от головной боли, если вам удобно использовать сторонний компонент в проекте.

Я не знаю, но ваш код вызывает два вопроса:

  1. Почему вы объявляете CommandBarControl myCommandbarButton вместо CommandBarButton myCommandbarButton?

  2. Почему вы устанавливаете ширину 900 пикселей? Это огромно. Я никогда не беспокоился об этом параметре в Excel, поскольку он автоматически изменяется, и я предполагаю, что Outlook будет вести себя так же.

Вы не устанавливаете свойство стиля кнопки панели команд (насколько я могу судить).

Это приводит к тому, что кнопка имеет MsoButtonStyle msoButtonAutomation. Я видел, как заголовок не появлялся, если оставить стиль на этом.

Попробуйте установить для свойства Style значение msoButtonCaption.

Другие вопросы по теме