2010-06-08 10 views
8

Sono nuovo alla programmazione VSTO. Ho creato un addin di base per Outlook 2007 che monitora una cartella contenente file di testo XML che apre e quindi li invia come e-mail, quindi li elimina. tutto funziona bene.È possibile aprire un modulo o una finestra in un componente aggiuntivo di Outlook (VSTO)

Desidero che l'utente sia in grado di configurare alcune impostazioni per il modo in cui l'addin/programma funzionerà, ad esempio la cartella che monitorerà e altre cose. Il modo logico per farlo è quello di creare una voce di menu nel componente aggiuntivo (che ho anche fatto) che apre un modulo di Windows (o finestra XAML) che consente loro di inserire i parametri.

Nel mio addin ho aggiunto un nuovo oggetto Windows Form, che ha funzionato, e il progettista ha aperto. Tuttavia, nel mio codice addin non riesco ad aprire il modulo. Il metodo Show() normalmente associato agli oggetti del modulo non è disponibile.

È semplicemente qualcosa che non puoi fare o sto semplicemente facendo nel modo sbagliato?

Ho letto sulle regioni di modulo di Outlook, ma queste sembravano essere collegate a elementi di Outlook come una nuova email, attività, appuntamento ecc ... non sembra essere un modo per creare un'area di forma che può essere aperta nella finestra principale di Outlook.

Idealmente, mi piacerebbe andare con il mio metodo originale di aprire una nuova finestra da una voce di menu, ma se questo non è possibile mi piacerebbe sentire altre soluzioni.

Grazie, Will.

+0

È possibile aprire le finestre bene. Cosa intendi per "non disponibile"? Hai un errore quando provi ad aprirlo o cosa? Se si verifica un errore (runtime o in fase di compilazione), si prega di inviare il messaggio di errore. –

risposta

7

Per una forma normale, sembra che non sia stato appena aggiunto System.Windows.Forms come riferimento, creare l'oggetto quindi mostrarlo ad esempio.

Form myFrm = new frmFlightList(); 
myFrm.Show(); 

Questo dovrebbe funzionare in un addin VSTO, come in qualsiasi altra forma. L'oggetto CMSConnectorControl a cui fai riferimento è una distrazione per gli altri per il caso generale di voler solo visualizzare un modulo.

+0

questo codice causa questo: questo controllo activex non può essere istanziato perché il thread corrente non è un apartment a thread singolo. – mustafatorun

0

capito questo, dopo che ho costruito la mia forma ho dovuto aggiungere queste righe

CMSConnectorControl formMain = new CMSConnectorControl(); 
formMain.ShowDialog(); 

alla funzione ThisAddIn_Startup().