2010-06-08 8 views
8

Je suis nouveau à la programmation VSTO. J'ai créé un addin de base pour Outlook 2007 qui surveille un dossier contenant des fichiers texte XML qu'il ouvre, puis les envoie sous forme de courrier électronique, puis les supprime. Tout cela fonctionne bien.Pouvez-vous ouvrir un formulaire ou une fenêtre dans un Outlook Addin (VSTO)

Je souhaite que l'utilisateur puisse configurer certains paramètres pour le fonctionnement du programme/add-in, tel que le dossier qu'il surveillera, entre autres. La manière logique de le faire est de créer un élément de menu dans l'addin (que j'ai également fait) qui ouvre un formulaire Windows (ou une fenêtre XAML) qui leur permet d'entrer les paramètres.

Dans mon addin j'ai ajouté un nouvel article Windows Form, qui a fonctionné, et le concepteur a ouvert. Cependant, dans mon code addin je ne peux pas ouvrir le formulaire. La méthode Show() normalement associée aux objets de formulaire n'est pas disponible.

Est-ce simplement quelque chose que vous ne pouvez pas faire, ou est-ce que je ne fais que la mauvaise façon? J'ai lu à propos des régions de formulaire Outlook, mais celles-ci semblaient être attachées à des éléments de perspectives tels qu'un nouveau courriel, une tâche, un rendez-vous, etc ... il ne semble pas y avoir moyen de créer une région de formulaire dans la fenêtre principale d'Outlook.

Idéalement, je voudrais aller avec ma méthode originale d'ouverture d'une nouvelle fenêtre à partir d'un élément de menu, mais si ce n'est pas possible, je voudrais entendre d'autres solutions.

Merci, Will.

+0

Vous pouvez ouvrir les fenêtres très bien. Que voulez-vous dire par «non disponible»? Avez-vous une erreur en essayant de l'ouvrir ou quoi? Si vous obtenez une erreur (à l'exécution ou à la compilation), veuillez poster le message d'erreur. –

Répondre

7

Pour une forme normale, il semble que vous n'avez pas simplement ajouté System.Windows.Forms comme référence, créer l'objet puis l'afficher par exemple.

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

Cela devrait fonctionner dans un add-in VSTO, comme dans toute autre forme. L'objet CMSConnectorControl auquel vous faites référence est une distraction pour les autres pour le cas général de vouloir simplement afficher un formulaire.

+0

ce code provoque ceci: ces contrôles ActiveX ne peuvent pas être instanciés parce que le thread actuel n'est pas un appartement à un seul thread. – mustafatorun

0

compris cela, Après avoir construit ma forme, je devais juste ajouter ces lignes

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

à la fonction ThisAddIn_Startup().

Questions connexes