Значение доступа к надстройке Outlook 2007 в editBox на пользовательской ленте - PullRequest
1 голос
/ 20 января 2011

Я создаю надстройку Outlook 2007 с использованием VS2008 с использованием IRibbonExtensibility.

Моя простая лента отображается на MailItem и имеет поле редактирования и элемент управления кнопкой.Требуемая функциональность заключается в том, что пользователь вводит число в поле редактирования, а затем нажимает кнопку.Сообщение электронной почты затем сохраняется в сторонней системе (используя номер, введенный в поле редактирования в качестве «первичного ключа» для управления местоположением и т. Д.)

Я застрял в точке доступа к значению, введенному пользователемв editBox из функции обратного вызова кнопки.

У меня есть следующая разметка

      <editBox
            id="FileNumber"
            maxLength="6"
            label="File No"
            />

      <button
            id="AddEmailTo"
            label="Save to"
            onAction ="AddEmailToButton_Action"
          />
    </group>
  </tab>

И следующий обратный вызов

public void AddEmailToButton_Action(Microsoft.Office.Core.IRibbonControl p_Control) {

        //what do I need to add here to access the value in the editBox?
    }

Спасибо, Андрей

1 Ответ

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

Вам нужно сохранить значение в закрытой переменной с обратным вызовом onChange

В вашем классе объявите приватную переменную для хранения значения поля ввода. Эта переменная позволит вам получить значение текстового поля.

private string FileNumberText = "initial value";

Чтобы инициализировать значение по умолчанию, используйте функцию обратного вызова getText

public string onGetText(IRibbonControl control) 
{   
switch (control.Id)
{
    case "FileNumber":                      
        return FileNumberText ; 
    case "editBox02":
        return "...";
    default:
        return "";
}               
}

Чтобы записать изменение окна редактирования (передать значение окна редактирования в переменную хранилища)

        // Recupere le contenu du controle editBox dans la variable Cible
        public void  RecupDonnee(IRibbonControl control, String Text)
        {
            switch (control.Id)
            {
                case "FileNumber":                      
                    FileNumberText = Text.Trim() ;  
                    break;
                case "editBox02":
                    Screen2 = Text.Trim() ; 
                    break;
            }       
        }

В твоей ленте XAML

<editBox 
 id="FileNumber"
 maxLength="6"
 label="File No"                 
 getText="onGetText"
 onChange="RecupDonnee"
 screentip="Tip" 
/>
...