VSTO Outlook切换状态

问题描述:

我正在为新邮件开发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

解决方案

有两种方法来解决这个问题。

一:用户属性上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

不知道你是否能得到当前邮件的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