Панель задач Excel не отображается

Я пытаюсь создать надстройку Excel с настраиваемой панелью задач. Я следил за этим руководством, чтобы показать элемент управления Windows Forms, когда пользователь нажимает настраиваемую кнопку на ленте. Однако я могу показать панель только тогда, когда добавляю окно тестового сообщения для события This_AddIn_Startup. Вот соответствующий код:

ThisAddIn.cs

private InputControl myInputControl { get; set; }
private Microsoft.Office.Tools.CustomTaskPane myCustomTaskPane {get;set;}


    public CustomTaskPane TaskPane
    {
        get
        {
            return myCustomTaskPane;

        }

    }

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {

        MessageBox.Show("loading"); //If I comment this out, task pane won't show

        myInputControl = new InputControl();
        try
        {
            myCustomTaskPane = this.CustomTaskPanes.Add(myInputControl, "Test Task Pane");
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);

        }
        myCustomTaskPane.VisibleChanged +=
    new EventHandler(myCustomTaskPane_VisibleChanged);

    }

Ribbon.cs

public partial class Ribbon
{
    private void Ribbon_Load(object sender, RibbonUIEventArgs e)
    {

    }

    private void btnPullData_Click(object sender, RibbonControlEventArgs e)
    {
        Globals.ThisAddIn.TaskPane.Visible = true;


    }

    private void txtPosition_TextChanged(object sender, RibbonControlEventArgs e)
    {

    }
}

Я проверил этот вопрос и отключил все другие надстройки, но это все еще не так. не работает.

Если во время отладки я поставил точку останова на btnPullData_Click и заметил, что возникло исключение, когда оно не отображалось. Вот два скриншота.

Панель загружается правильно (окно сообщения включено)

введите описание изображения здесь

Панель не загружается (нет окна сообщения)

введите описание изображения здесь

Полный текст исключения:

base = {System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
   at Microsoft.Office.Core._CustomTaskPane.get_Window()
   at Microsoft.Office.Tools.CustomTaskPaneImpl.get_Window()}

Я в некотором смысле новичок, пишущий на C #, как мне вообще решить проблему с этим исключением? Я не понимаю, как добавление MessageBox временно решает проблему.

Изменить: изменен заголовок


person colinwurtz    schedule 09.09.2015    source источник
comment
Могу ли я предоставить еще какую-нибудь полезную информацию? Я уверен, что кто-то сталкивался с этим раньше.   -  person colinwurtz    schedule 14.09.2015


Ответы (1)


Я так и не понял, почему моя панель задач не отображается при ее создании с нуля. Однако, используя VSTO Contrib, я смог использовать демонстрационный проект Excel в качестве шаблона и вставить свой собственный код в нужный. Теперь настраиваемая панель легко отображается в Excel каждый раз.

Полезное видео для начала работы здесь.

person colinwurtz    schedule 04.11.2015