亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在運行時添加到功能區一次即可

在運行時添加到功能區一次即可

C#
12345678_0001 2023-08-27 10:47:32
您好,我正在嘗試將當前打開的聯系人電話號碼添加到功能區。我創建了功能區并添加了一個包含電話號碼的 SplitButton。在“ThisAddin”中,當當前資源管理器更改時,它會觸發一個僅獲取項目類型的事件。如果它是一個聯系人,它會呼叫//ThisAddin.cs on explorer change event - if is contact run:    Globals.Ribbons.CallContact.AddButton(contactItem.BusinessTelephoneNumber);  //Ribbon classinternal void AddButton(string name)    {                    if (name != null && name.Count() > 2)        {            RibbonButton item = Globals.Factory.GetRibbonFactory().CreateRibbonButton();            item.Label = name;            item.ShowLabel = true;            this.newSplit.Items.Add(item);        }    }這有效一次,第一次打開聯系人時,電話號碼會顯示在功能區中。打開另一個聯系人窗口將導致添加功能區項目,但功能區項目為空白且為空。我只是嘗試將聯系人電話號碼添加到功能區并將其留在那里,同時用戶可以打開另一個聯系人,并且運行相同的代碼將電話號碼添加到功能區。添加項目后,我不需要保留對它們的引用。感謝您的幫助。我覺得這里的某個地方需要有一個調用。
查看完整描述

2 回答

?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

Ribbon UI 是靜態的,因為它在啟動時(或在窗口顯示之前)加載一次。您能做的最好的事情就是定義回調并在您需要的地方調用它們。例如,您可以為功能區控件定義“getVisible”回調,而不是在運行時添加新元素。


IRibbonUI.Invalidate方法使 Ribbon 用戶界面的所有控件的緩存值無效。


您可以使用 COM 加載項中的回調過程來自定義功能區 UI。對于加載項實現的每個回調,都會緩存響應。


例如,如果外接程序編寫器為按鈕實現 getImage 回調過程,則調用該函數一次,加載圖像,然后如果需要更新圖像,則使用緩存的圖像而不是調用該過程。此過程將保持不變,直到加載項使用 Invalidate 方法發出信號表明緩存的值無效,此時將再次調用回調過程并緩存返回響應。然后,加載項可以通過調用 Refresh 方法強制立即更新 UI。


<customUI … OnLoad="MyAddinInitialize" …>



Dim MyRibbon As IRibbonUI?


Sub MyAddInInitialize(Ribbon As IRibbonUI)?

?Set MyRibbon = Ribbon?

End Sub?


Sub myFunction()?

?MyRibbon.Invalidate() ' Invalidates the caches of all of this add-in's controls?

End Sub


查看完整回答
1 反對 回復 2023-08-27
?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

您必須告訴 Outlook 刷新功能區。

您需要指定一個回調來檢索按鈕的標題,而不是將其硬編碼到功能區的 XML 中。

請注意,由于您可以打開多個檢查器,因此您必須提供在其自己的檢查器中打開的每個項目的特定數據。


查看完整回答
反對 回復 2023-08-27
  • 2 回答
  • 0 關注
  • 172 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號