我正在为office应用程序开发一个添加项。我试图在设计模式( powerpoint的设计模式)中显示当前放置在powerpoint幻灯片上的对象(自定义对象)的描述。当我单击我的加载项时,相关的对象描述将作为第一个选项卡页显示在选项卡式窗口上。
标签页上有一个按钮,当我点击它时,我需要将描述复制到windows剪贴板上。我尝试使用clipboardclass,它引发以下异常,System.Threading.ThreadstateException {“当前线程必须设置为单线程单元(STA)模式,然后才能进行OLE调用。请确保主函数上标记了STAThreadAttribute。”}
剪贴板代码: Clipboard.Clear() Clipboard.SetText(lblObjectID.Text)
我在网上搜索了一个解决方案,得到了几个答案,比如: 1.在调用Thread.CurrentThread.SetApartmentState(ApartmentState.STA)之前将STAThread放在主函数2. SetDataObject之前。
但我不知道该把第一个选项和第二个选项放在哪里没有效果。有人能帮帮我吗。谢谢。
发布于 2010-04-02 13:26:46
默认情况下,WinForms是STA。您是在创建另一个线程还是使用BackgroundWorker?运行以下代码以确定您所处的模式:
MessageBox.Show(System.Threading.Thread.CurrentThread.GetApartmentState().ToString())编辑:
但是,在调用剪贴板函数之前,也可以尝试使用这个命令:
Application.OleRequired()https://stackoverflow.com/questions/2566463
复制相似问题