2012-05-25 13 views
5

Sto usando il seguente codice per leggere un indirizzo email da un DataGridView quindi creare un email di Outlook. Funziona perfettamente, tranne che la nuova email è impostata come topMost e/o aperta come finestra di dialogo, il che significa che non posso fare clic o fare altro in Outlook mentre è aperta la nuova finestra di posta elettronica. Questo è problematico se ho la mia nuova e-mail aperta e stavo cercando di cercare o cercare qualcosa nella mia casella di posta. Anche la mia applicazione non risponderà (è bloccata) fino a quando non chiudo o spedisco l'e-mail.new email blocca Outlook, forza la finestra di posta elettronica come topMost

C'è un modo per creare una nuova e-mail e consentire comunque funzionalità regolari? Se faccio clic sul nuovo pulsante di posta elettronica da Outlook stesso, posso avere tante di queste aperte come desidero, utilizzare la ricerca, ecc.

La riga this.TopMost = false nasconde la mia app WinForms e visualizza la nuova finestra di posta elettronica in primo piano.

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)); 
} 

Qual è anche strano è se scrivo alcune cose nella e-mail e chiuderlo, posso salvarlo. Se lo faccio, quando apro l'e-mail di backup, ritorna allo stato bloccato. Sto iniziando a pensare che questo abbia a che fare con il modo in cui è stata creata l'email, quindi alcune impostazioni o attributi vengono applicati e salvati con esso.

risposta

9

Provare a sostituire questa linea:

oMsg.Display(true); 

... con:

oMsg.Display(false); 

Per la documentazione MailItem.Display, il nome del parametro è Modal, e deve essere specificato come:

True per rendere la finestra modale. Il valore predefinito è False.

+0

hm mai testato, "Display (False)" significava non mostrare affatto l'e-mail. Grazie. – ikathegreat