2012-05-25 3 views
5

Я использую следующий код для чтения адреса электронной почты из DataGridView и создания электронной почты Outlook. Это работает отлично, за исключением того, что новое электронное письмо устанавливается как topMost и/или открывается как диалоговое окно, то есть я не могу щелкнуть или сделать что-либо еще в Outlook, пока новое окно электронной почты открыто. Это проблематично, если у меня открыто мое новое электронное письмо, и я пытался найти или найти что-то в своем почтовом ящике. Также мое приложение не будет отвечать (заблокировано), пока я не закрою или не отправлю электронное письмо.новый адрес электронной почты блокирует внешний вид, заставляет окно электронной почты как topMost

Есть ли способ создать новое электронное письмо и по-прежнему допускать регулярную функциональность? Если я нажму кнопку «Новый адрес электронной почты» из самого Outlook, у меня может быть так много таких, как я хочу, использование поиска и т. Д.

Строка this.TopMost = false - это скрыть мое приложение WinForms и отобразить новое окно электронной почты спереди.

try 
{ 

     string emailString = resultsGrid[resultsGrid.Columns["Email"].Index, resultsGrid.SelectedCells[resultsGrid.Columns["Email"].Index].RowIndex].Value.ToString(); 

    if(emailString.Contains("mailto:")) 
    { 
     emailString = emailString.Replace("mailto:", ""); 
    } 

    this.TopMost = false; 

    // Create the Outlook application by using inline initialization. 
    Outlook.Application oApp = new Outlook.Application(); 

    //Create the new message by using the simplest approach. 
    Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem); 
    oMsg.Subject = ""; 
    oMsg.To = emailString; 
    oMsg.Body = ""; 
    oMsg.Display(true); 


    oMsg = null; 
    oApp = null; 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(string.Format("An error occurred: {0}", ex.Message)); 
} 

Что тоже странно, если я напишу что-то в электронном письме и закрою его, я могу его сохранить. Если я это сделаю, когда я открою письмо обратно, он вернется в заблокированное состояние. Я начинаю думать, что это имеет какое-то отношение к тому, как было создано электронное письмо, поэтому некоторые настройки или атрибуты применяются и сохраняются вместе с ним.

ответ

9

Попробуйте заменить эту строку:

oMsg.Display(true); 

... с:

oMsg.Display(false); 

За документацию MailItem.Display, имя параметра является Modal, и должен быть определен как:

True сделать окно модальным. Значение по умолчанию: False.

+0

hm никогда не тестировалось, что, фигурируемое «Display (False)» означает, что не отображается электронное письмо вообще. Благодарю. – ikathegreat

Смежные вопросы