我在.Net应用程序(V4 C#VS2010)中有一个DataGridView &想要复制所有数据到剪贴板上点击一个按钮。没问题 -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语句if(row.Cells [i] .Visible)',因为几列不可见并且此解决方案复制所有单元格,可见与否 - ('dataGridView1.GetClipboardContent();'仅限副本可见的东西)。不知道如何处理DataGridViewImageCell,但这不是我的特定应用程序的问题。 – Nigel
没问题奈杰尔,很高兴帮助。当我提到DataGridViewImageCell时,我的意思是我不确定如果您使用的是DataGridViewTextBoxCell以外的任何其他代码,但我相信这种类型是默认的,如果您没有另行指定。但是如果你使用所有的TextBox单元格,它不应该是一个问题。干杯。 –
只是想提一提,如果'DataGridView'很大,你可能想要使用'StringBuilder'而不是仅仅使用字符串连接。 – Anthony