2016-05-10 2 views
0

Я написал кнопку ленты VSTO для массового изменения объектов на существующем MailItem. Однако он не работает в 100% случаев. Я подозреваю, что приглашение просить меня сохранить электронную почту после изменения темы, препятствует изменению темы.Outlook VSTO отключить запрос с просьбой сохранить сообщение после изменения темы

Как подавить диалог программно, чтобы я мог изменять объекты, а затем отключать диалог после этого.

public void EditSubject() 
{ 
    var explorer = _OutlookApplication.ActiveExplorer(); 
    var selection = explorer.Selection; 
    List<MailItem> mailItems = new List<MailItem>(); 
    foreach(var item in selection) 
    { 
     var mailitem = item as MailItem; 
     if(mailitem != null) mailItems.Add(mailitem); 
    } 

    if(mailItems.Count > 0) 
    { 
     using (var form = new FormEditSubject()) 
     { 
      form.Subject = mailItems[0].Subject; 

      if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
      { 
       // changing subject works, but does not work 100% of the time. 
       // Save prompt dialog shows when closing outlook. 
       mailItems.ForEach(item => item.Subject = form.Subject); 
       System.Windows.Forms.MessageBox.Show(string.Format("{0} MailItems subject edited to: {1}", mailItems.Count, form.Subject)); 
      } 
     } 
    } 
} 
+0

Пожалуйста, пост соответствующих фрагментов кода. Когда именно отображается подсказка? –

+0

@DmitryStreblechenko добавлен фрагмент кода. Благодарю. – Jake

ответ

0

Вы никогда не называйте MailItem.Save() после изменения объекта оценки