我想知道是否有人可以帮助我。我写了一些代码,将从剪贴板复制到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]; ;
}
}
}
}
}