剪贴数据到剪贴板上
private void SetDataGridVIewToClipboard
{
Clipboard.SetDataObject(DataGridView1.GetClipboardContent());
}
将剪贴版上的数据保存到DataGridVIew上,不能从中间粘贴
private void SetClipboardToDataGridVIew()
{
//当前单元格是否选择的判断
if (DataGridView2.CurrentCell == null)
{
return;
}
int insertRowIndex = DataGridView2.CurrentCell.RowIndex;
// 获取剪切板的内容,并按行分割
string pasteText = Clipboard.GetText();
if(string.IsNullOrEmpty(pasteText))
{
return;
}
pasteText = pasteText.Replace(" ", " ");
pasteText = pasteText.Replace(' ', ' ');
pasteText.TrimEnd(new char[] { ' ' });
string[] lines = pasteText.Split(new string[] { "\r\n" },StringSplitOptions.None);
bool isHeader = false;
for (int r = 0; r < lines.Length; r++)
{
DataRow dr = ((DataTable)DataGridView2.DataSource).NewRow();
((DataTable)DataGridView2.DataSource).Rows.Add(dr);
}
foreach (string line in lines)
{
insertRowIndex++;
// 是否是列头
if (isHeader)
{
isHeader = false;
continue;
}
// 按 Tab 分割数据
string[] vals = line.Split(new char[] { '\t' });
DataGridViewRow row = DataGridView2.Rows[insertRowIndex];
int insertColumnsIndex = DataGridView2.CurrentCell.ColumnIndex;
for (int i = 0; i < vals.Length; i++)
{
row.Cells[insertColumnsIndex].Value = vals[i];
insertColumnsIndex++;
}
// DataGridView的行索引+1
}
}