Есть ли способ контролировать ширину левой панели задач, содержащей надстройку? - PullRequest
3 голосов
/ 04 июля 2011

У меня есть надстройка Excel 2007, созданная с помощью библиотеки VSTO VS2010.Когда я создаю новый объект надстройки, я также создаю левую область задач Excel, используя следующий код:

Microsoft.Office.Tools.CustomTaskPane taskPaneAddIn;
MyAddIn addIn;

addIn = new MyAddIn(this.Application);
taskPaneAddIn = this.CustomTaskPanes.Add(addIn, "My AddIn");
taskPaneAddIn.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionLeft;
taskPaneAddIn.Width = addIn.Size.Width + 5;

Надстройка - это пользовательский элемент управления Windows, имеющий свои собственные измерения.

Код выше, похоже, не работает, так как ширина taskPaneAddIn всегда установлена ​​в Excel.пользователь всегда должен вручную развернуть панель задач, чтобы увидеть всю ширину элемента управления.

Существует ли какой-либо программируемый способ задания ширины панели задач?

1 Ответ

14 голосов
/ 05 июля 2011

Я думаю, что источником вашей проблемы является то, что когда вы добавляете элемент управления в CustomTaskPanes, его ширина устанавливается равной нулю (я думаю, что это связано с тем фактом, что элемент управления закреплен).Чтобы решить вашу проблему, вы можете сделать следующее и получить ширину вашего элемента управления, прежде чем он будет добавлен:

var control = new TaskPaneControl();
var width = control.Width;
var taskPane = CustomTaskPanes.Add(control, "Wide");
taskPane.Width = width;
taskPane.Visible = true;
...