2016-02-18 3 views
0

Я разрабатываю пользовательскую панель задач для Microsoft PowerPoint 2010. Мне нужно, чтобы область задач была синхронизирована между несколькими окнами/презентациями приложений. Панели задач отображаются с помощью кнопки переключения на ленте.PowerPoint 2010 Custom TaskPane в многострочных окнах

Поскольку PowerPoint 2010 отображает каждую презентацию в другом окне документа (это отличается от 2007), мне нужно создать панель задач отдельно для каждого окна и синхронизировать их. Я следил за Microsoft tutorial о том, как создавать панели задач для нескольких окон приложений, и я использую метод CustomTaskPaneCollection.Add(UserControl, String, Object), чтобы указать, в каком окне приложения должна быть связана панель задач. В этом случае Object является PowerPoint.DocumentWindow, с которым должна быть связана панель задач.

По какой-то причине все мои панели задач создаются в активном окне, а не в окне, которое я назначаю. Например, если я открою 3 презентации PowerPoint и затем переключу панель задач, все три панели задач будут добавлены в активное окно.

Это код, я использую для добавления панели задач, когда переключатель нажимается:

public void AddAllTaskPanes() 
{ 
    PowerPoint.DocumentWindows windows = Globals.ThisAddIn.Application.Windows; 
    if(windows.Count > 0) 
    { 
     for (int i=1; i<=windows.Count; i++){ 
     PowerPoint.DocumentWindow window = windows[i]; 
     customTaskPane = this.CustomTaskPanes.Add(new UserControl1(), "My User Control", window); 
     customTaskPane.Visible = true; 
     } 
    } 
} 

кажется, что это должно успешно добавить каждую панель задач для ее указания window, и я не могу понять, почему все панели задач ассоциируются с активным окном. Я провел много исследований по этой проблеме и не смог найти решение. Ближайший я нашел this question, однако ответ соответствует PowerPoint 2007, а не 2010, как и ссылки на вопрос.

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

ответ

-1

Я пошел по пути создания TaskPanes из PresentationAfterOpen и PresentationAfterNew Events, которые вызывают такое же поведение.

Заметка о событии PresentationAfterOpen, если документ, выбранный пользователем, уже открыт, событие все еще запущено, поэтому вам нужно проверить, был ли CustomTaskPane уже создан для этого документа перед созданием нового.

Способом преодоления этой проблемы является создание указателя на связанный с ним DocumentWindow в пользовательской панели и перечисление с помощью проверки CustomTaskPaneCollection для соответствующей.

Смежные вопросы