2010-04-02 8 views
2

Je suis en train de développer une application PowerPoint pour l'ajout de bureau. J'essaie d'afficher une description de l'objet (objet Personnalisé) actuellement déposé sur la diapositive Powerpoint en mode conception (mode Conception du Powerpoint). Lorsque je clique sur mon ajout, la description de l'objet associé s'affiche dans une fenêtre à onglets en tant que première page.System.Threading.ThreadstateException

Il y a un bouton sur la page d'onglet, et quand je clique dessus j'ai besoin de la description pour être copiée dans le presse-papiers de Windows. J'ai essayé ceci en utilisant clipboardclass, il lève l'exception suivante, System.Threading.ThreadstateException {"Le thread en cours doit être défini en mode STA (Single Thread Apartment) avant que les appels OLE puissent être effectués Assurez-vous que votre fonction Main a marqué STAThreadAttribute il "}

code pour le presse-papiers. Clipboard.Clear() Clipboard.SetText (lblObjectID.Text)

je cherché sur le net pour trouver une solution et a obtenu quelques réponses comme, 1. Put [ STAThread] dans la fonction principale 2. Thread.CurrentThread.SetApartmentState (ApartmentState.STA) Immédiatement avant votre appel à SetDataObject.

Mais je ne sais pas où mettre le 1er et la 2e option ne fonctionnait pas. Quelqu'un peut-il m'aider s'il vous plaît. Merci.

Répondre

4

WinForms est STA par défaut. Créez-vous un autre thread ou utilisez-vous un BackgroundWorker? Exécutez ce code pour déterminer quel mode vous êtes dans:

MessageBox.Show(System.Threading.Thread.CurrentThread.GetApartmentState().ToString()) 

Edit:

Mais vous pourriez peut-être également essayer d'utiliser this command avant d'appeler les fonctions du presse-papiers:

Application.OleRequired()