У меня есть дополнительный элемент Excel, который отображает некоторые структуры на листе. Пользователи могут копировать структуры и вставлять их в другой рабочий лист или другое приложение, которое обрабатывается форматами буфера обмена. Когда пользователь копирует структуру, я преобразовываю структуру в определенный формат и помещаю ее в буфер обмена с помощью DataObject :: SetData(). Обратите внимание, что когда копия инициируется в Excel, она помещает несколько форматов в буфер обмена (см. Изображение)..NET - Способ добавления моего собственного формата буфера обмена в существующие форматы
Проблема заключается в том, что существует стороннее приложение, которое зависит от данных в буфере обмена (копирование из 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 Clipboard Форматы - (Игнорировать Native Format)
Clipboard Formats http://www.freeimagehosting.net/uploads/258a7fcdd8.jpg
Если я помещаю эту специальную оболочку в буфер обмена, стороннее приложение, зависящее от форматов Excel, не сможет его понять. – A9S6
Я не понимаю, почему стороннее приложение не сможет найти свои данные. Не проходит ли он через интерфейс IDataObject? – bbudge
+1: Я сейчас понял. Я попробую это и посмотрю, работает ли он с сторонним (он должен). Благодаря !! – A9S6