string s = Clipboard.GetText().Replace("\r", " ");
string[] lines = s.Split('\n');
int row = dgView.CurrentCell.RowIndex;
int col = dgView.CurrentCell.ColumnIndex;
int linesCount = lines.Count();
if ((row + linesCount) - dgView.RowCount > 0) dgView.Rows.Add((row + linesCount) - dgView.RowCount);
asyncSqlResultsViewer.publicToolStripProgressBar.Maximum = linesCount;
asyncSqlResultsViewer.publicToolStripProgressBar.Step = 1;
asyncSqlResultsViewer.publicToolStripProgressBar.Visible = true;
dgView.ReadOnly = true;
foreach (string line in lines)
{
if (line.Length > 0)
{
string[] cells = line.Split('\t');
for (int i = 0; i < cells.GetLength(0); ++i)
{
if (col + i < dgView.ColumnCount)
{
dgView[col + i, row].Value = cells[i];
}
else
{
break;
}
}
row++;
}
else
{
break;
}
asyncSqlResultsViewer.publicToolStripProgressBar.PerformStep();
}
非常に遅いです。 5列の500行を貼り付けるには約30秒かかります。 DataGridViewに既にデータがある可能性があることを考慮してください。必ずしも上書きする必要はありません(すべて開始セルに依存します)。だから私はDataTableを使用してそれをDataSourceとして割り当てることができるかどうか分からない。このコードはなぜDataGridViewに貼り付けるのが遅いのですか?
私はそれをしましたが、それはあまり役に立たなかった。 – Juan