Как отделить теги CustomUI в Excel-DNA от методов OnAction?

В моем файле.dna у меня есть:

<DnaLibrary Name="First Add-In" RuntimeVersion="v4.0" Language="C#">
  <ExternalLibrary Path="MyLibrary.dll" Pack="true"/>  
  <Image Name="M" Path="M.png" Pack="true" />
  <CustomUI>
    <customUI xmlns='http://schemas.microsoft.com/office/2009/07/customui' loadImage='LoadImage'>
      <ribbon>
        <tabs>
          <tab id='CustomTab' label='My 2010 Tab'>
            <group id='SampleGroup' label='My Sample Group'>
              <button id='Button1' label='My Second Button' image='M' size='normal' onAction='RunTagMacro' tag='ReformatSelection='/>
            </group >
          </tab>
        </tabs>
      </ribbon>
    </customUI>
  </CustomUI>  
</DnaLibrary>

В моем файле.cs у меня есть:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ExcelDna.Integration;
using System.Runtime.InteropServices;
using ExcelDna.Integration.CustomUI;
using System.Windows.Forms;

namespace MyLibrary
{
    [ComVisible(true)]
    public class Class1 : ExcelRibbon
    {                

        public void ReformatSelection(IRibbonControl control)
        {
            MessageBox.Show("Hello");
        } 
    }
}

Когда я загружаю надстройку, кнопка и вкладка прекрасно отображаются на ленте, но нажатие кнопки не запускает метод ReformatSelection. В файлах примеров, поставляемых с Excel-DNA, все подпрограммы и функции, связанные с событиями onAction, находятся в файле.dna. Я пытаюсь переместить их из файла.dna в файл.cs. Что я делаю неправильно?

1 ответ

Решение

Ваша подпись для ReformatSelection() не подходит для onAction обработчик кнопки ленты.

Так должно быть:

public void ReformatSelection(IRibbonControl control) {...}

Вы можете получить список всех подписей обратных вызовов Office Ribbon здесь: http://msdn.microsoft.com/en-us/library/aa722523(v=office.12).aspx

Другие вопросы по тегам