我在一个 .Net 应用程序(V4 C# VS2010)中使用了一个 DataGridView,希望在点击按钮时将所有数据复制到剪贴板。没问题 -
private void copyToClipboard()
{
dataGridView1.SelectAll();
DataObject dataObj = dataGridView1.GetClipboardContent();
if (dataObj != null)
Clipboard.SetDataObject(dataObj);
}
问题在于用户可能已经选择了DataGrid上的一些单元格、行等,我不想改变那个选择。上面的代码显然会选择所有内容。最后可以使用dataGridView1.ClearSelection();,虽然有点改善但仍无法达到所需效果。
我可以保存所选的单元格:
var mySelectedCells = dataGridView1.SelectedCells;
但是,我如何在复制后重新选择DataGrid上的这些选定单元格?有没有一种简单的方法将选定单元格集合重新放回DataGrid中?也许有更好的方法可以在不影响当前选定单元格的情况下将整个网格复制到剪贴板中?
if (row.Cells[i].Visible)
,因为有几列是不可见的,而这个解决方案复制了所有单元格,无论是否可见 - (dataGridView1.GetClipboardContent();
仅复制可见内容)。不确定DataGridViewImageCell将如何处理,但这不是我特定应用程序的问题。 - NigelDataGridView
很大,你可能想使用StringBuilder
而不仅仅是使用字符串拼接。 - Anthony