1

最初のコード:

プログラムでリボンバーにボタンを追加する:

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);
}

プログラムによるいくつかのボタンの表示/非表示:

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;
}

すべての contactItems.open にイベントをバインドし、次のメソッドを呼び出します。

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);
    }
}

連絡先に特定の電話番号の種類があるかどうかに応じて、リボンバーにボタンを表示/非表示にしようとしています。

連絡先を初めて開くと、リボン ボタンが正しく表示/非表示になります。

できます

しかし、別の連絡先 (または同じ連絡先) を選択すると、visible=false であっても、ラベルの画像なしですべてのボタンが表示されます。

うまくいきません。

私の推測では、最初に連絡先ウィンドウを閉じると、outlook がリボンボタンを壊してしまうと思います。そのため、別のものを開くと、リボンボタンがすべてめちゃくちゃになります。誰にもアイデアがありますか?

4

1 に答える 1