Как получить элементы управления из ленты ExcelDNA - PullRequest
0 голосов
/ 28 апреля 2018

Мне было интересно, как вы можете получить элементы управления из пользовательского RibbonUI, определенного в файле .dna, который генерирует ExcelDNA? В настоящее время я реализую рабочий процесс входа в систему, одна из кнопок отключена. Где пользователь будет входить в систему и в случае успеха активирует отключенную кнопку.

1 Ответ

0 голосов
/ 29 апреля 2018

Интерфейс ленты Office основан исключительно на обратных вызовах. Таким образом, вы не можете «извлечь элементы управления» из ленты и установить свойства для них. Вы реализуете изменения состояния, вызывая обратный вызов - в этом случае, вероятно, ваш обратный вызов getEnabled. Чтобы инициировать аннулирование ленты и повторную оценку ваших обратных вызовов, вы вызываете Invalidate на интерфейсе ленты, который вы получаете при загрузке ленты.

Некоторый код C #, который реализует это, может выглядеть так:

public class MyRibbon: ExcelRibbon 
{ 
  private static IRibbonUI _ribbonUi; 

  // This ribbon xml can be returned in code, or places in the .dna     file 
  public override string GetCustomUI(string uiName) 
  { 
    return 
    @" 
    <customUI onLoad='Ribbon_Load' 
              xmlns='http://schemas.microsoft.com/office/2006/01/customui'> 
      <ribbon> 
        <tabs> 
          <tab idMso='TabAddIns'> 
            <group id='group1' label='Group1'> 
              <button id='button1' getEnabled='btn_GetEnabled' getLabel='btn_GetLabel' /> 
            </group> 
          </tab> 
        </tabs> 
      </ribbon> 
    </customUI> 
    "; 
  } 
  public void Ribbon_Load(IRibbonUI sender) 
  { 
    _ribbonUi = sender; 
  } 
  public bool btn_GetEnabled(IRibbonControl control) 
  { 
    return true; 
  } 
  public bool btn_GetLabel(IRibbonControl control) 
  { 
    return "My Button"; 
  } 
  public static void Refresh() 
  { 
    if (_ribbonUi != null) { _ribbonUi.Invalidate(); } 
  } 
} 
...