Как получить объект настраиваемой области задач в классе элемента управления ленты - PullRequest
2 голосов
/ 30 октября 2011

При разработке проекта Excel vsto, как я могу обрабатывать пользовательскую панель задач в классе, который является элементом управления ленты. Например, я хотел бы показать настраиваемую панель задач при нажатии кнопки элемента управления ленты.

Дора

Ответы [ 3 ]

4 голосов
/ 06 ноября 2011

Я предполагаю, что вы работаете с надстройкой Excel VSTO, с Ribbon Visual Designer.Вы можете достичь желаемого, сделав свою пользовательскую панель задач доступной через свойство в надстройке:

public partial class ThisAddIn
{
   private CustomTaskPane taskPane; 
   internal CustomTaskPane TaskPane
   {
      get
      {
         return this.taskPane;
      }
   }

... и добавив кнопку на своей ленте и добавив обработчик событий длясобытие, доступ к надстройке через Globals:

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

Недавно я написал пост, в котором описывает процесс , вы можете найти его полезным.Это также возможно с использованием ленты XML.

3 голосов
/ 22 ноября 2011

Это может быть достигнуто с помощью пользовательского элемента управления Win Forms.Я работал над проектом, в котором мы должны были расширить MS Word и нуждались в этой функциональности, но тот же пример применим к Excel.

Еще один интересный способ, с которым я столкнулся в сети, - это иметь пользовательский элемент управления Windows.и разместить пользовательский элемент управления WPF в элементе управления Windows!Этот курс позволяет вам воспользоваться всеми удивительными инструментами, которые вы получаете с WPF, вот пример:

1) Перетащите ToggleButton на ленте (Visual Designer). Это будет использоваться, чтобы показать скрыть задачупанель.Использование ToggleButton - хороший выбор, так как при нажатии он подсвечивается.

2) Добавьте приведенный ниже код к событию щелчка ToggleButton

 Globals.ThisAddIn.TaskPane.Visible = ((RibbonToggleButton)sender).Checked;

3) Добавьте ссылку из вашего проекта вследующая сборка - WindowsFormsIntegration

4) В ваш ThisAddIn.cs добавьте две директивы с использованием перечисленных ниже:

   using Microsoft.Office.Tools;
   using System.Windows.Forms.Integration;

5) Добавьте два пользовательских элемента управления

5.1) Пользовательский контроль (имя - taskPaneControl1)

5.2) Пользовательский контроль (WPF), (имя - con)

Использование имен, которые я использовал, поможет при копировании / вставкеприведенный ниже код, но любыми способами измените его, если хотите

6) Добавьте приведенный ниже код в ThisAddIn.cs class

public CustomTaskPane TaskPane
{
    get{return taskPaneValue;}
}

private TaskPaneControl taskPaneControl1;
private CustomTaskPane taskPaneValue;
private WpfControl con;

internal void AddTaskPane()
{
    ElementHost host = new ElementHost();
    con = new WpfControl();
    host.Child = con;
    host.Dock = DockStyle.Fill;
    taskPaneControl1 = new TaskPaneControl();
    taskPaneControl1.Controls.Add(host);
    taskPaneValue = this.CustomTaskPanes.Add(taskPaneControl1, "My Taskpane");
    taskPaneValue.Visible = true;
}

6) Добавьте дваПриведенный ниже код для события запуска в вашем ThisAddIn.cs

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
AddTaskPane();
taskPaneValue.Visible = false;
}

При открытии приложения MS Office панель задач будет скрыта, чтобы переключить свойство Visible, чтобы изменить его в событии запуска.,Перейдите к кнопке ToggleButton и несколько раз нажмите ее, чтобы убедиться, что панель задач отображается, как и ожидалось

Также посмотрите на следующую ссылку, большая часть моего кода пришла отсюда - http://xamlcoder.com/cs/blogs/joe/archive/2007/07/17/using-wpf-with-vsto-office-2007.aspx

0 голосов
/ 02 ноября 2011

Это сложная задача, поскольку ленты и панели задач являются отдельными объектами. Одна из основных проблем заключается в том, что для каждого инспектора существует только один экземпляр класса ленты и несколько экземпляров панели задач. Для этого должным образом требуется некоторое углубленное понимание внутренних функций Office.

Решение также зависит от того, используете ли вы XML-ленту или конструктор лент. Какой подход вы используете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...