У меня есть надстройка для Excel, которая отображает некоторые структуры на листе. Пользователи могут копировать структуры и вставлять их в другой лист или другое приложение, которое обрабатывается форматами буфера обмена. Когда пользователь копирует структуру, я конвертирую ее в определенный формат и помещаю в буфер обмена, используя DataObject :: SetData (). Обратите внимание, что когда копия инициируется в Excel, она помещает несколько форматов в буфер обмена (см. Изображение).
Проблема в том, что существует стороннее приложение, которое зависит от данных в буфере обмена (скопируйте из Excel и вставьте в это стороннее приложение), но забавно то, что я не уверен, от какого формата это зависит. Мне нужно сохранить существующие форматы, которые там выложил Excel, а также добавить свой собственный формат.
В настоящее время, когда я использую класс Clipboard в .NET (беря DataObject и вызывая SetData внутри него), все остальные форматы заменяются новыми.
Затем я попытался создать новый объект DataObject, скопировать данные существующего формата в этот объект данных и затем установить этот объект данных в буфере обмена. Это прекрасно работает, но копирование данных занимает время.
// Copying existing data in clipboard to our new DataObject
IDataObject existingDataObject = Clipboard.GetDataObject();
DataObject dataObject = new DataObject();
string[] existingFormats = existingDataObject.GetFormats();
foreach (string existingFormat in existingFormats)
dataObject.SetData(existingFormat, existingDataObject.GetData(existingFormat));
Я ищу решение, позволяющее просто получить доступ к существующему объекту DataObject и спокойно добавлять в него свои собственные данные, не затрагивая другие форматы.
Форматы буфера обмена Excel - (Игнорировать собственный формат)
Форматы буфера обмена http://www.freeimagehosting.net/uploads/258a7fcdd8.jpg