Надстройка 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");
            }
        }

person Krantz    schedule 23.08.2008    source источник


Ответы (3)


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

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

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

person Ryan Farley    schedule 23.08.2008

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

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

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

person CtrlDot    schedule 20.09.2008

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

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

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

person Community    schedule 10.03.2009