2016-08-19 103 views
0

我正在爲新郵件開發VSTO Outlook Addin。用戶可以在想要保存郵件時切換圖像。VSTO Outlook切換狀態

當前圖像被點擊時,我設置一個全局布爾值爲true。

private bool _state; 
private void toggleBtn_Click(object sender, RibbonControlEventArgs e) 
{ 
    if (_state) { 
    _state = false; 
    } else { 
    _state = true; 
    } 
} 

哪些工作正常,直到用戶在發送第一個郵件窗口之前打開另一個新的郵件窗口。

如何僅爲每個新郵件窗口存儲狀態?

非常感謝。

解決方案

有兩種方法來解決這個問題。

一:用戶屬性上https://www.add-in-express.com/creating-addins-blog/2013/01/30/preserve-outlook-ribbon-controls-state/

兩個 優秀的博客:使用包裝來存儲類的狀態 瞭解更多關於https://msdn.microsoft.com/en-us/library/office/ff973716(v=office.14).aspx

回答

0

不知道你是否能得到當前郵件的ENTRYID正在編輯如果是的話,你可以嘗試所有的狀態緩存到一本字典,類似下面

private Dictionary<string, bool> _states = new Dictionary<string, bool>(); 
private void toggleBtn_Click(object sender, RibbonControlEventArgs e) 
{ 
    MailItem ml; 
    // get current MailItem 
    // something like: MailItem ml = popupWindow.GetMail 

    // default false 
    if (!(_states.Keys.Contains(ml.EntryId))){ 
     _states[ml.EntryId] = false; 
    } 

    // toggle the state 
    _states[ml.EntryId] = !_states[ml.EntryId]; 

} 
但是

,你可能希望處理日Ë彈出窗口關閉的事件,當用戶關閉彈出窗口從詞典中刪除的條目(例如,電子郵件發送)

+0

謝謝雷克斯,目前沿側工作這篇博客https://開頭的博客。 msdn.microsoft.com/anilkumar/2010/07/19/how-to-effectively-maintain-the-state-of-the-ribbon-in-outlook-2010/ – mausinc