我想知道是否有人可以帮助我。我已经编写了一些代码,这些代码将从剪贴板复制到 DatagridView 中。我遇到的问题是,除了第一个单元格之外,一切都按预期工作。
例如,如果我从 Excel 2 列中仅复制一行,则第一列中的值为 20,第二列中的值为 30
然后,当我将它粘贴到 DataGridView 中时,我得到以下信息。
在第一列中,我得到数字 20,然后是一个大空格和 30 的值,但在第二列中只显示了 30 的值。
以下是我的代码 ID,任何人都知道如何修复第一个单元格,请帮助我
if (e.Control && e.KeyCode == Keys.V)
{
char[] rowSplitter = { '\r', '\n' };
char[] columnSplitter = { '\t' };
//get the text from clipboard
IDataObject dataInClipboard = Clipboard.GetDataObject();
string stringInClipboard = (string)dataInClipboard.GetData(DataFormats.Text);
//split it into lines
string[] rowsInClipboard = stringInClipboard.Split(rowSplitter, StringSplitOptions.RemoveEmptyEntries);
//get the row and column of selected cell in grid
int r = DGV.SelectedCells[0].RowIndex;
int c = DGV.SelectedCells[0].ColumnIndex;
//add rows into grid to fit clipboard lines
if (DGV.Rows.Count < (r + rowsInClipboard.Length))
{
MessageBox.Show("PasteValues Will be Outside of Grid");
return;
}
// loop through the lines, split them into cells and place the values in the corresponding cell.
for (int iRow = 0; iRow < rowsInClipboard.Length; iRow++)
{
//split row into cell values
string[] valuesInRow = rowsInClipboard[iRow].Split(columnSplitter);
//cycle through cell values
for (int iCol = 0; iCol < valuesInRow.Length; iCol++)
{
//assign cell value, only if it within columns of the grid
if (DGV.ColumnCount - 1 >= c + iCol)
{
DGV.Rows[r + iRow].Cells[c + iCol].Value = valuesInRow[iCol];
for (int i = 0;
i < selectedCellCount; i++)
{
DGV.SelectedCells[i].Value = valuesInRow[iCol]; ;
}
}
}
}
}