Получить данные пользовательского дополнения VSTO - PullRequest
0 голосов
/ 31 октября 2018

Я играю с надстройкой VSTO, чтобы добавить функцию, которая может быть полезна для меня. Итак, что я сделал до сих пор, объявил мой ribbon.xml как показано ниже:

<tabs>
  <tab idMso="TabAppointment" insertAfterMso="TabAddIns">
    <group id="TripGroup" label="Add Trip">
      <dropDown id="TripBooking_Tab_AddMeetingBefore"
                getLabel="GetLabel"
                getSelectedItemIndex="TripBooking_Tab_AddMeeting_GetSelectedItemIndex"
                getItemCount="TripBooking_Tab_AddMeeting_GetItemCount"
                getItemID="TripBooking_Tab_AddMeeting_GetItemID"
                getItemLabel="TripBooking_Tab_AddMeeting_GetItemLabel"
                onAction="TripBooking_Tab_AddMeetingBefore_OnAction"/>
      <separator/>
      <dropDown id="TripBooking_Tab_AddMeetingAfter"
                getLabel="GetLabel"
                getSelectedItemIndex="TripBooking_Tab_AddMeeting_GetSelectedItemIndex"
                getItemCount="TripBooking_Tab_AddMeeting_GetItemCount"
                getItemID="TripBooking_Tab_AddMeeting_GetItemID"
                getItemLabel="TripBooking_Tab_AddMeeting_GetItemLabel"
                onAction="TripBooking_Tab_AddMeetingAfter_OnAction"/>
    </group>
  </tab>
</tabs>

Все работает как шарм, и я получаю 2 dropdown в интерфейсе. Теперь вопрос: как мне получить значение dropdown для каждой новой встречи, которую я делаю?

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Вы не можете получить текущее значение. Вместо этого вам нужно добавить его в свой плагин (как переменную / поле) и заставить его визуализировать элемент управления, реагировать на события элемента управления и соответственно обновлять значение.

Когда вам нужно значение, вы просто используете свою внутреннюю переменную.

Этот подход, не позволяющий пользователю получать доступ к элементам управления ленты или манипулировать ими непосредственно во время выполнения, является хорошей вещью и не позволяет надстройкам ломать друг друга или встроенный пользовательский интерфейс, как это было в предварительной ленте. (командная строка) время. Microsoft перешла на этот подход, когда впервые представила ленту в 2007 году.

В некоторой степени связано: Как установить значение по умолчанию в раскрывающемся списке элементов управления ленты в Excel

0 голосов
/ 31 октября 2018

Я бы установил переменные для события OnAction для dropDown и при загрузке значений по умолчанию.

public void OnAction_Dropdown(Office.IRibbonControl control, string itemId, int index)
{
    try
    {
        switch (control.Id) //do a lookup of the value from your list based on the index
        {
            case "TripBooking_Tab_AddMeetingBefore":
                // set a variable here
                break;
            case "TripBooking_Tab_AddMeetingAfter":
                // set a variable here
                break;
            default:
                break;
        }

    }
    catch (Exception ex)
    {
        // format message
        var userMessage = new StringBuilder()
            .AppendLine("Contact your system administrator.")
            .AppendLine("Procedure: " + caller.Name.Trim())
            .AppendLine("Description: " + ex.ToString())
            .ToString();
        MessageBox.Show(userMessage, "Unexpected Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

    }

}
...