DataGridView复制粘贴多列

时间:2013-03-30 05:41:53

标签: c# datagridview

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

        }

0 个答案:

没有答案