最初のコード:
プログラムでリボンバーにボタンを追加する:
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 がリボンボタンを壊してしまうと思います。そのため、別のものを開くと、リボンボタンがすべてめちゃくちゃになります。誰にもアイデアがありますか?