2009-11-16 18 views
5

Soy nuevo complemento de Outlook en la programación y no estoy seguro si esto es posible:VSTO - Outlook 2007 - ¿Mostrar formulario antes de enviar el mensaje?

Quiero mostrar un formulario emergente (o selección) y solicite la entrada del usuario en el momento en que haga clic en Enviar. Básicamente, cada vez que envían un correo electrónico (Nuevo o Responder), se les pedirá que seleccionen un valor en un cuadro desplegable (lista de elementos de una base de datos SQL, preferiblemente). Basándose en su selección, se adjuntará un mensaje de texto al asunto del correo.

Hice mi investigación y parece que debería usar Form Regions pero no estoy seguro de cómo puedo mostrar un formulario emergente/extra cuando el usuario hace clic en Enviar. Además, parece que las Regiones de formulario se pueden usar para ampliar/reemplazar el formulario de correo de VIEW actual, pero ¿puedo usarlo para crear el formulario NUEVO?

Gracias por el tiempo de todos.

Respuesta

5

Probablemente pueda agregar el controlador de eventos Enviar artículo en el método de inicio interno ThisAddIn y luego en el Evento de envío de elementos, llame al formulario personalizado (un formulario de Windows). En la muestra siguiente llamo a un formulario de Windows personalizado como cuadro de diálogo modal antes de enviar el elemento de correo electrónico y después de hacer clic en el botón Enviar.

private void InternalStartup() 
{ 
    this.Application.ItemSend += new ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend); 
} 

void Application_ItemSend(object Item, ref bool Cancel) 
{ 
    if (Item is Microsoft.Office.Interop.Outlook.MailItem) 
    { 
     Microsoft.Office.Interop.Outlook.MailItem currentItem = Item as Microsoft.Office.Interop.Outlook.MailItem; 
     Cancel = true; 
     Forms frmProject = new ProjectForm();; 

     DialogResult dlgResult = frmProject.ShowDialog(); 

     if (dlgResult == DialogResult.OK) 
      System.Windows.Forms.SendKeys.Send("%S"); //If dialog result is OK, save and send the email item 
     else 
      Cancel = false; 

     currentItem.Save(); 
     currentItem = null; 
    } 
} 
Cuestiones relacionadas