我正在尝试从我的 .NET C# 应用程序启动的单词实例中提取 RTF 代码。执行此操作的代码是:
Clipboard.Clear();
//document is of type Microsoft.Office.Interop.Word.Document
document.Application.Activate();
document.Select();
document.Content.Copy();
if (Clipboard.ContainsData(DataFormats.Text) &&
Clipboard.ContainsData(DataFormats.Rtf))
{
DocumentContent = Clipboard.GetText(TextDataFormat.Rtf);
}
Clipboard.Clear();
周期性发生的是,当调用 Clipboard.GetText 时,它返回 String.Empty。所以我想知道是否有可能对 Content.Copy 的 COM 调用尚未完成。我怀疑这是因为如果我在 DocumnetContent=... 上放置一个断点并且它以 String.Empty 的形式返回,我可以将调试器移回一行并再次调用 GetText 行,这一次它将包含文本. 同样,如果它返回 String.Empty,我可以进入记事本并点击 control+V,它将粘贴我希望在剪贴板上的复制文本。
我必须强调,这种行为并不一致。我无法随意复制它,但如果我执行足够多的操作(通常 20 人中有 1 人会触发此行为),我最终会得到它。
感谢您的帮助,如果需要任何说明,请告诉我。