2013-02-23 5 views
1

premier code:Perspectives ribbonbuttons ne pas afficher correctement dans Outlook Addin

Programmaticaly bouton ajouter à une ribbonbar:

for (int i = 0; i < titles.Length; i++) 
{ 
    RibbonButton button = this.Factory.CreateRibbonButton(); 
    button.Visible = false; 
    button.Label = titles[i]; 
    button.Image = OutlookAddIn1.Properties.Resources.Sans_titre_5; 
    button.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge; 
    this.group1.Items.Add(button); 
} 

Afficher/masquer certains boutons programme:

private void showOrHide(contact){ 
    // Building a phone array with the contact infos... 
    RibbonButton button = Globals.Ribbons.Ribbon1.ribbonButtons.ElementAt(i).Value; 
    button.Visible = button.Enabled = phones[i] != null; 
} 

J'ai lié un événement sur tous mes contactItems.open et il appelle cette méthode:

private void Event(ref bool asd) 
{ 
    Outlook.Selection selection = Globals.ThisAddIn.Application.ActiveExplorer().Selection; 
    if (selection.OfType<Outlook.ContactItem>().Count() == 1) 
    { 
     Outlook.ContactItem contact = selection.OfType<Outlook.ContactItem>().FirstOrDefault(); 
     showOrHide(contact); 
    } 
} 

a-vous le voyez, je suis en train de montrer/boutons de masquage dans mon ribbonbar selon que le contact a un certain type de numéro de téléphone ou non.

La première fois que j'ouvre un contact, les ribbonbuttons sont montrés/cachés correctement:

It works

Mais lorsque je sélectionne un autre contact (ou le même), il affiche tous mes boutons, sans images de étiquettes, même si elles sont visibles = faux:

Doesn't work.

Je pense que les perspectives me casse ribbonbuttons quand je ferme ma fenêtre de contact pour la première fois. Donc, quand j'en ouvre un autre, les boutons de ruban sont tous désordonnés. Quelqu'un a une idée?

Répondre

-1

Utilisez la méthode this pour ajouter des contrôles de ruban aux compléments. C'est plutôt fiable. Ajoutez un ruban xml de Visual Studio à votre solution, puis vous pouvez ajouter des contrôles à votre ruban comme suit.

<tab idMso="TabAddIns"> 
    <group id="ContentGroup" label="Content"> 
     <button id="textButton" label="Insert Text" 
      screentip="Text" onAction="OnTextButton" 
      supertip="Inserts text at the cursor location."/> 
     <button id="tableButton" label="Insert Table" 
      screentip="Table" onAction="OnTableButton" 
      supertip="Inserts a table at the cursor location."/> 
    </group> 
</tab> 

Vous pouvez définir des rappels d'événements et déclarer des labels et d'autres propriétés pour eux lors de l'exécution. Vous pouvez invalider les contrôles du ruban et contrôler sa visibilité en déclarant une méthode de rappel pour la propriété "getVisible" du contrôle.

Questions connexes