Контроль доступа в VSTO Word Addin - PullRequest
0 голосов
/ 04 марта 2020

Я прошел учебник Microsoft по добавлению кнопок на ленту в MS Word, используя разметку XML. Я добавил это XML

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
  <ribbon>
    <tabs>
      <tab idMso="TabAddIns">
        <group id="MyGroup" label="TestAddin">
          <editBox id="myEditBox" label="Script" OnChange="TextFieldChanged"/>
          <button id="testButton" label="Test Button"
             screentip="Test" onAction="OnTestButton"
             supertip="Blah blah."/>         
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

Как получить доступ к тексту внутри поля ввода при нажатии на кнопку?

Я пытался

public void TextFieldChanged(Office.IRibbonControl control)
{
}

и

public void TextFieldChanged(string text)
{
}

но оба безуспешно. Как должен выглядеть обратный вызов для получения содержимого EditBox?

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Должно принимать как IRibbonControl, так и строку типа

public void TextFieldChanged(Office.IRibbonControl control, string text)
{
    Word.Range range = Globals.ThisAddIn.Application.Selection.Range;
    range.Text = text;
}

https://shulerent.com/2011/08/16/changing-the-value-of-an-editbox-office-ribbon-control-at-runtime/

PS: НЕ запускается, когда текст изменяется как Название подразумевает. Он срабатывает при нажатии Enter!

0 голосов
/ 04 марта 2020

Необходимо указать обратный вызов onChange для элемента управления editBox: https://docs.microsoft.com/en-us/openspecs/office_standards/ms-customui/7b552756-a970-466d-b7c2-ee5bbe171e34

...