DataGridView复制粘贴(带有样式,背景颜色...)
我有一个C#Windows窗体应用程序与DataGridView。
复制和粘贴(选择datagrid中的数据和Excel中的ctrl-v后的ctrl-c)几乎可以正常工作。
问题在于,样式(如背景颜色)未被粘贴到Excel中,而只是单元格值。 我是否需要在datagridview某处更改属性或实现自定义代码?
谢谢,
AFAIK影响剪贴板行为的唯一数据网格属性是“ClipBoardCopyMode”,并且非常“使用标题或不”。 除非我脱离底座,否则如果您想要格式化,您必须自己将其放在剪贴板中。 但说实话,作为一个用户,我不想格式化。 当我复制一些东西时,它使我疯狂,然后必须重新格式化它们以匹配我目前使用的格式。 我更愿意粘贴数据,然后如果我想按照显示的格式进行格式化,请执行此操作。 如果你打算自己推出,我建议使用Excel剪贴板格式,以便用户可以“PasteSpecial”值,如果他们想。 这可能会给你一些想法:http://www.codeguru.com/vb/gen/vb_misc/samples/article.php/c6393
我有同样的问题,并使用Control.DrawToBitmap
向ClipBoard添加一个位图。 首先使用一个DataObject,用DataGridView中的'标准'剪贴板内容填充,然后添加位图,然后将数据对象推送到剪贴板,用户可以使用'粘贴特殊'功能并在位图或纯文本之间进行选择。 就像是:
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代码非常复杂。 但是,有一些代码示例可以找到。
我只是偶然发现了这个使用XML输出的Excel和其他格式的例子。
链接地址: http://www.djcxy.com/p/62251.html上一篇: DataGridView Copy Paste (with style, background color, ...)