Tôi có một DataGridView trong ứng dụng .Net (V4 C# VS2010) & muốn sao chép tất cả dữ liệu vào khay nhớ tạm trên một lần bấm nút. Không có vấn đề -DataGridView: Sao chép hoàn thành vào clipboard
private void copyToClipboard()
{
dataGridView1.SelectAll();
DataObject dataObj = dataGridView1.GetClipboardContent();
if (dataObj != null)
Clipboard.SetDataObject(dataObj);
}
Vấn đề là người dùng có thể đã có một số tế bào, hàng vv lựa chọn trên DataGrid & Tôi không thực sự muốn thay đổi lựa chọn đó. Ở trên rõ ràng là chọn tất cả mọi thứ. Tôi có thể dataGridView1.ClearSelection(); ở cuối mà là tốt hơn nhưng vẫn không đạt được những gì cần thiết.
tôi có thể lưu các ô được chọn:
var mySelectedCells = dataGridView1.SelectedCells;
nhưng làm thế nào để có được những ô được chọn chọn lại trên DataGrid sau khi copy? Có một cách dễ dàng để có được các bộ sưu tập các tế bào được lựa chọn trở lại vào DataGrid? Có lẽ có một cách tốt hơn để có được toàn bộ lưới được sao chép vào khay nhớ tạm ở nơi đầu tiên mà không ảnh hưởng đến các ô được chọn hiện tại?
Cảm ơn. Đây là những gì tôi đã làm cuối cùng. Tôi đã phải thêm một câu lệnh if if (row.Cells [i] .Visible) 'bởi vì một vài cột là vô hình và giải pháp này sao chép tất cả các ô, có thể nhìn thấy hay không - (' dataGridView1.GetClipboardContent(); 'copy only công cụ hiển thị). Bạn không chắc chắn làm thế nào DataGridViewImageCell sẽ được xử lý nhưng đó không phải là một mối quan tâm cho ứng dụng cụ thể của tôi. – Nigel
Không vấn đề gì Nigel, rất vui được giúp đỡ. Khi tôi đề cập đến DataGridViewImageCell, tôi chỉ có nghĩa là tôi không chắc chắn làm thế nào mã sẽ hành xử nếu bạn đang sử dụng bất cứ điều gì khác hơn là DataGridViewTextBoxCell, nhưng tôi tin rằng loại là mặc định nếu bạn không chỉ định khác. Nhưng nếu bạn đang sử dụng tất cả các ô TextBox, nó không phải là một vấn đề. Chúc mừng. –
Chỉ muốn đề cập rằng nếu 'DataGridView' là lớn, bạn có thể muốn sử dụng một' StringBuilder' và không chỉ sử dụng chuỗi nối. – Anthony