【发布时间】:2023-09-11 21:20:02
【问题描述】:
我正在尝试在 DataGridView 中进行复制和粘贴,以类似于 Excel。我当前的代码执行此操作,但第一个单元格除外,它似乎将剪贴板中的所有内容粘贴到第一个单元格中。下面是我在cell_keydown 事件中使用的代码。
为了澄清,如果我复制以下内容:
我得到了结果:
在单击单元格之前,粘贴的数据在两个日期之间确实有一个空格。
如果有人有更好的方法来完成我最终想要做的事情,那也将不胜感激!
If e.Control AndAlso e.KeyCode = Keys.C Then
Dim d As DataObject = dgv1.GetClipboardContent()
Clipboard.SetDataObject(d)
e.Handled = True
ElseIf e.Control AndAlso e.KeyCode = Keys.V Then
Dim s As String = Clipboard.GetText().Replace(vbCr, " ")
Dim lines As String() = s.Trim.Split(vbLf)
Dim row As Integer = dgv1.CurrentCell.RowIndex
Dim col As Integer = dgv1.CurrentCell.ColumnIndex
Dim linesCount As Integer = lines.Count()
If (row + linesCount) - dgv1.RowCount > 0 Then dgv1.Rows.Add((row + linesCount) - dgv1.RowCount)
For Each line As String In lines
If line.Length > 0 Then
Dim cells As String() = line.Split(vbTab)
For i As Integer = 0 To cells.GetLength(0) - 1
dgv1.CurrentCell.Value = cells(i)
If col + i < dgv1.ColumnCount Then
dgv1(col + i, row).Value = cells(i)
Else
Exit For
End If
Next
row += 1
Else
Exit For
End If
Next
End If
【问题讨论】:
标签: vb.net datagridview copy-paste