【问题标题】:VSTO Outlook Toggle stateVSTO Outlook 切换状态
【发布时间】:2016-09-12 17:15:29
【问题描述】:

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

【问题讨论】:

    标签: c# outlook vsto


    【解决方案1】:

    不确定是否可以获取当前正在编辑的邮件的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];
    
    }
    

    但是,当用户关闭弹出窗口(例如,发送的电子邮件)时,您可能希望处理弹出窗口关闭事件以从字典中删除条目

    【讨论】:

    【解决方案2】:

    解决方案

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

    一:用户属性优秀博客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

    【讨论】:

      猜你喜欢
      • 2013-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-12
      • 2016-10-03
      • 1970-01-01
      • 2019-06-15
      相关资源
      最近更新 更多