【发布时间】:2018-10-25 04:04:18
【问题描述】:
根据用户的不同,我有一个可以使用和不使用 GUI 运行的应用程序。我需要它将 DataGrid 导出为 CSV 文件,代码如下:
// Copy contents of datagrid to clipboard, including header.
mainDataGrid.SelectAllCells();
mainDataGrid.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
ApplicationCommands.Copy.Execute(null, mainDataGrid);
string result = (string)Clipboard.GetData(DataFormats.CommaSeparatedValue);
这适用于 GUI。当我没有 GUI 时会出现问题,我认为这是因为剪贴板无法复制不存在的内容。有没有其他方法可以导出它,或者有没有一种方法可以设置剪贴板数据而不是执行复制命令?
【问题讨论】:
-
Clipboard 类有一些
SetData和SetDataObject方法可能会有所帮助。 msdn Clipboard doc -
@MikeHjortChristensen 我试过了,我使用 SetData 将它作为字符串“System.Windows.Controls.DataGrid Items.Count:196”返回给我,而 SetDataObject 则返回 null
-
您是否尝试过使用 DataGridView 代替? Link
-
我决定循环遍历所有列和行并用逗号分隔它会更容易