先上代码:
以编程方式将按钮添加到功能区:
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);
}
}
你能看到吗,我试图在我的功能区中显示/隐藏按钮,具体取决于联系人是否具有某种电话号码类型。
我第一次打开联系人时,功能区按钮会正确显示/隐藏:
但是当我选择另一个联系人(或同一个)时,它会显示我所有的按钮,没有标签图像,即使它们是可见的=假:
我的猜测是,当我第一次关闭联系窗口时,outlook 会破坏我的功能区按钮。所以当我打开另一个时,功能区按钮都乱七八糟了。有人有想法吗?