2012-05-25 12 views
5

Estoy usando el siguiente código para leer una dirección de correo electrónico de un DataGridView y luego crear un correo electrónico de Outlook. Esto funciona perfectamente, excepto que el nuevo correo electrónico está configurado como topMost y/o abierto como una ventana de diálogo, lo que significa que no puedo hacer clic ni hacer nada más en Outlook mientras esté abierta la nueva ventana de correo electrónico. Esto es problemático si tengo abierto mi nuevo correo electrónico y estaba tratando de buscar o buscar algo en mi bandeja de entrada. Además, mi aplicación no responderá (está bloqueada) hasta que cierre o envíe el correo electrónico.nuevo correo electrónico bloquea la perspectiva, fuerza la ventana de correo electrónico como topMost

¿Hay alguna manera de crear un nuevo correo electrónico y seguir permitiendo la funcionalidad habitual? Si hago clic en el botón de correo electrónico nuevo de Outlook, puedo tener tantos abiertos como desee, usar la búsqueda, etc.

La línea this.TopMost = false es para ocultar mi aplicación WinForms y mostrar la nueva ventana de correo electrónico en el frente.

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

Lo que también es raro es que si escribo algunas cosas en el correo electrónico y la cierro, puedo guardarlo. Si hago esto, cuando abro la copia de seguridad del correo electrónico, vuelve a estar bloqueado. Estoy empezando a pensar que esto tiene algo que ver con la forma en que se creó el correo electrónico, por lo que algunas configuraciones o atributos se aplican y se guardan con él.

Respuesta

9

Trate de reemplazar esta línea:

oMsg.Display(true); 

... con:

oMsg.Display(false); 

por la documentación MailItem.Display, el nombre del parámetro es Modal, y debe especificarse como:

True para hacer que la ventana sea modal. El valor predeterminado es False.

+0

hm nunca lo ha probado, figurado "Pantalla (Falso)" significaba que no mostraba el correo electrónico en absoluto. Gracias. – ikathegreat

Cuestiones relacionadas