我正在拦截富文本框的粘贴事件,以便在粘贴之前处理内容。如果它包含表格或图像等。我需要做一些自定义的东西。如果复制的选择来自 Word 2010 并且包含混合内容(例如文本和表格/图像),Word 会将内容以多种格式放置在剪贴板上。这些包括 HTML 和 RTF,但我更愿意使用 WordML。我使用 ClipSpy 检查剪贴板上实际放置了哪些格式和数据,“嵌入源”格式似乎是包含 WordML 的格式。我认为这可以作为一个包打开:
var stream = Clipboard.GetData("Embed Source") as MemoryStream;
var package = Package.Open(stream);
它抛出一个 EndOfStreamException ,我认为它可能被包裹在其他东西中。我可以将流写入磁盘并使用 7-zip 打开它,然后查看内容是否符合预期。所以基本上有两个问题:“嵌入源”是获取 WordML 的正确 DataObject 吗?如果是,我该如何反序列化它?