У меня была такая же проблема, и я использовал Control.DrawToBitmap
, чтобы добавить растровое изображение в ClipBoard. Используя сначала DataObject, заполненный как «стандартным» содержимым буфера обмена из DataGridView, затем добавив Bitmap, а затем нажав DataObject в буфер обмена, пользователь может использовать функции «вставить специальные» и выбирать между растровым или простым текстом , Что-то вроде:
Dim data as New DataObject()
Dim html As DataObject = DGV.GetClipboardContent()
data.SetData(DataFormats.Html, html.GetData(DataFormats.Html))
' create some rectangle, probably using DataGridView.Bounds
Dim bitmap As New System.Drawing.Bitmap(rectangle.Width, rectangle.Height)
DGV.DrawToBitmap(bitmap, rectangle)
data.SetData(DataFormats.Bitmap, bitmap)
Там также возможность создания RTF-вывода, но это намного больше работы, как код RTF является довольно сложным. Однако есть некоторые примеры кода, которые можно найти.
И я просто наткнулся на это example, используя XML-вывод для Excel и других форматов.