Кнопка Изменить в ленте при загрузке ленты - PullRequest
0 голосов
/ 14 января 2011

Я создал пользовательскую ленту для Outlook 2007 AppointmentItem. AppointmentItem может иметь пользовательское свойство. Когда настраиваемое свойство установлено, кнопка на настраиваемой ленте должна быть отключена (по умолчанию она включена).

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

public partial class Ribbon1 {  
[...]  
    private void Ribbon1_Load(object sender, RibbonUIEventArgs e)  
    {  
        if (myCustomProperty != "")  
        {  
            Globals.Ribbons[Globals.ThisAddIn.Application.ActiveInspector()]  
                .Ribbon1.buttonCollaborate.Enabled = false;  
        }  
    }  
    [...]  
}  

Я не знаю, что не так, может быть Globals.Ribbons[...].Ribbon1 это не текущая лента? Или есть ленточный_загрузочный_фин_метод?

Я использовал VisualStudio 2010 и .Net 3.5

Спасибо за ваше время!

1 Ответ

0 голосов
/ 14 января 2011

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

Вот фрагмент моего (небрежного) кода:

string taglineActive;
OLRegistryAddin buttonSet = new OLRegistryAddin();  // variable for reading the value of the registry key
UpdateBody msgBody = new UpdateBody();  // method for adding/removing tagline from the message

private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
{
    taglineActive = buttonSet.RegCurrentValue();  // retrieve the current registry value

    if (taglineActive == "0")
    {
        // tagline is off for all messages
        ActiveAllMessages.Checked = false; // uncheck "All Messages" button
        ActiveAllMessages.Label = "Inactive - All Messages";  // change the label
        ActiveThisMessage.Visible = false;  // hide the "This Message" button
        ActiveThisMessage.Enabled = false;  // deactivate the "This Message" button
    }
    else if (taglineActive == "1")
    {
        // tagline is on for all messages
        ActiveAllMessages.Checked = true;   // check "All Messages" button
        ActiveAllMessages.Label = "Active - All Messages";  // change the label
        ActiveThisMessage.Visible = true;   // show the "This Message" button
        ActiveThisMessage.Enabled = true;   // activate the "This Message" button
    }
...